6

ギャラリーウィジェットと同様に動作するが、水平方向ではなく垂直方向にスクロールするウィジェットを探しています。私はあちこちグーグルで検索しましたが、答えはそのような既成のウィジェットが存在しないということです。

だから私は自分自身に言いました、まあ、私はアンドロイドソースのギャラリークラスを見て、代わりに垂直にスクロールするようにそれを変更します。それほど簡単ではありません。android SDKは(当然のことながらフレームワークのメンテナンスのために)多くのことを隠しますが、ウィジェットを拡張することも非常に困難になります。たとえば、ギャラリークラスは、その親であるAbsSpinner(mSelectedPositionなど)やその親の親などから多くのメンバー変数を使用しますが、これらはアプリ開発者の観点からはまったくアクセスできません。これらのメンバー変数にアクセスできないと、ギャラリークラスの同様のコードを自分で使用することはできません。

継承チェーンを上に移動して、それらの親クラスのソースコードをすべてプロジェクトに配置するか、すでに問題を解決している既存のフレームワークウィジェットを使用せずにウィジェットをすべてゼロから作成する以外に、垂直スクロールギャラリー。

より良い方法はありますか?Androidフレームワークがウィジェットの拡張を非常に難しくしているのはなぜですか?

4

1 に答える 1

12

より良い方法はありますか?

あなたが何を作っているのかわからないので、それは言うことができません。ListView私はあなたのニーズに十分かもしれないというYoniSamlanのコメントに同意します。

Androidフレームワークがウィジェットの拡張を非常に難しくしているのはなぜですか?

Gallery再実装すると、方向を変えるのが簡単になると考えられますが、Androidのコアチームは、そのような再実装を他の開発の優先順位と比較検討する必要があります。

それらの優先事項の1つは、SDKの忠実度です。彼らは、Android 1.5用に記述されたコードが、変更なしでAndroid2.1上で実行できることを可能な限り確認したいと考えています。これは2つの方法でそれらを制限します。まず、Gallery既存のAPIを壊してしまう場合など、既存のAPIを変更するだけでは不十分です。第2に、コアAndroidチームは、サードパーティの開発者にとって有益である場合でも、チームがこれらのメソッドまたはクラスを長期にわたってサポートする準備ができるまで、新しいメソッドまたはクラスを公開しません。

Androidは、SDKが存在する前に最初に作成されました。これが、ほとんどの組み込みアプリケーション(電卓など)をSDKだけでは構築できないが、ファームウェアイメージの一部として構築する必要がある理由です。同様に、コアAndroidチームは、最初のSDKの作成の一環として、SDKの忠実度を念頭に置いて、既存のコードを使用して、使用できるパブリックコンテンツと使用できない保護/プライベートコンテンツを作成する最善の方法を決定する必要がありました。お気づきかもしれませんが、Androidは膨大な数であるため、SDKの作成にはそれに応じて膨大なスタッフの時間がかかったに違いありません。誰かがバーティカルGalleryを作成できる可能性を高めるためにそれをたくさん書き直すことは、おそらく彼らのリストの上位にはありませんでした。

理想的な世界では、そうです。組み込みのウ​​ィジェットをより簡単に拡張して、その動作を大幅に変更することができます。同様に、理想的な世界では、私は髪を持っているでしょう... :-)

于 2010-02-20T18:10:08.503 に答える