再利用可能なウィジェットを作成したい。標準要素の序数複合体でなければなりません。最善のアプローチは何ですか。以下は私が現在使用しているコード サンプルですが、もっと洗練されたものがあるかもしれません。さらに、以下のサンプルは実行時に完全に実行されますが、Eclipse のビジュアル エディターは例外をスローします (これは現時点では問題ではありません)。コンポジットを作成するための推奨される方法はありますか? フラグメントを使用する必要がありますか?
public class MyComposite extends LinearLayout {
private ImageView m_a1;
private ImageView m_a2;
private ImageView m_w1;
private ImageView m_w2;
private ImageView m_w3;
private ImageView m_w4;
public CallBackSlider(final Context context) {
this(context, null);
}
public CallBackSlider(final Context context, final AttributeSet attrs) {
super(context, attrs);
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.my_composite, this, true);
setupViewItems();
}
private void setupViewItems() {
m_a1 = (ImageView) findViewById(R.id.A1Img);
m_w1 = (ImageView) findViewById(R.id.Wave1Img);
m_w2 = (ImageView) findViewById(R.id.Wave2Img);
m_w3 = (ImageView) findViewById(R.id.Wave3Img);
m_w4 = (ImageView) findViewById(R.id.Wave4Img);
m_a2 = (ImageView) findViewById(R.id.A2Img);
resetView();
}
private void resetView() {
m_w1.setAlpha(0);
m_w2.setAlpha(0);
m_w3.setAlpha(0);
m_w4.setAlpha(0);
}
}
レイアウト xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/MyComposite"
... >
<ImageView
android:id="@+id/A1Img"
android:src="@drawable/a1"
...
/>
<ImageView
android:id="@+id/Wave1Img"
...
android:src="@drawable/wave1" />
<ImageView
android:id="@+id/Wave2Img"
...
android:src="@drawable/wave2" />
<ImageView
android:id="@+id/Wave3Img"
...
android:src="@drawable/wave3" />
<ImageView
android:id="@+id/Wave4Img"
...
android:src="@drawable/wave4" />
<ImageView
android:id="@+id/EarImg"
...
android:src="@drawable/a2" />
</LinearLayout>
次に、次のような他のレイアウトで使用できます。
...
<your.package.MyComposite
android:id="@+id/mc1"
...
/>
...
また、MyComposite クラスのインスタンスだけでなく、Java コードからも使用できます。