1

HTCセンスフォンのフットプリントと時計アプリは、下部のボタンバーにあるスライダーコントロールを使用します(例については、このムービーを参照してください:https://docs.google.com/leaf?id=0B9hmEy_z2CRzOTJmYTVlNDktYjkwMS00YTM5LTk3ODQtYmIzODU4Yzk1YjA0&hl=en& authkey =

階層ビューアから、これにカスタムコントロールを使用していることがわかります。同じ効果を出す方法を探しています。アプリの下部に、左から右、後ろにドラッグしてさまざまなタブを選択できる可動セレクター付きのボタンバーが必要です。

誰かが私がこれを達成する方法についていくつかのヒントを与えることができますか?この目的でどのレイアウトコントロールを使用できますか?タブとボタンバーの作成方法は知っていますが、スライディングセレクターに少し戸惑っています。

よろしくお願いします、Ivo

4

2 に答える 2

1

ビューを作成するには、2つの主なオプションがあります。

1つは、アクティビティが使用するレイアウトファイルでXMLで定義することです。

<LinearLayout ... > <!-- or any other layout, see layout documentation in the SDK -->
  <ImageView ...    <!-- or another view as fits your needs -->
    android:id="@+id/myview"
    android:src="@drawable/myimage" ... />
</LinearLayout>

次に、setContentViewを呼び出した後、findViewById(R.id.myview)を使用して、コード内でビューを参照できます。(もちろん、XMLファイルで「@ + foo / bar」と言った場合は、R.foo.barを使用します)。

もう1つの方法は、動的に作成してビュー階層にアタッチすることです。

ImageView v = new ImageView();
v.setImageResource(R.drawable.myimage);
... // initialize your view here
parent.addChild(v);

...とか、ぐらい。

イベントを取得するには、いくつかのオプションがあります。それらの1つは、View(またはそのことについてはImageView)をサブクラス化し、onTouchEventを実装することです。上記のコードを調整して、ImageViewの代わりに新しいクラスのインスタンスを作成する必要があります(Javaコードでは明らかですが、XMLの場合はタグ名として記述し、(Context、AttributeSet)を受け取るコンストラクターを実装するようにしてくださいそのスーパークラスのコンストラクタを呼び出すため)。または、TouchDelegateを記述して、ImageViewでsetTouchDelegateを使用することもできます。これは、おそらくあなたの場合はもっと簡単です。

もう1つのアプローチは、GestureDetectorを作成し、そのhitTestメソッドを使用してタッチをビューに一致させることです。あなたが説明しているタスクにとって、それはやり過ぎですが、アプリケーションがより複雑になるときに役立つかもしれません。

于 2010-10-13T12:46:11.937 に答える
0

TabWidget クラスを拡張して、独自のレンダリングを行います。他のタブ システムとのホットスワップと統一されたインターフェイスの利点が得られると同時に、タブ バーを好きなように描画できます。setCurrentTab でアニメーションを開始します。

于 2010-10-13T04:07:52.530 に答える