2010-10-12 75 views
1

HTC感應電話上的腳印和時鐘應用程序使用底部按鈕欄上的滑塊控件(請參閱此影片中的示例:https://docs.google.com/leaf?id=0B9hmEy_z2CRzOTJmYTVlNDktYjkwMS00YTM5LTk3ODQtYmIzODU4Yzk1YjA0&hl=en&authkey=CMWwwegG)。如何在android中使用滑動控件創建按鈕欄?

從層次結構查看器中,我可以看到他們使用自定義控件。我正在尋找一種達到同樣效果的方式。我需要一個可移動選擇器的應用程序底部的按鈕欄,我可以從左到右拖動,從而選擇不同的選項卡。

任何人都可以提供一些關於如何實現這一目標的提示嗎?我可以爲此使用哪種佈局控制?我知道如何創建標籤和按鈕欄,但我對滑動選擇器有點困惑。

感謝和親切的問候, 伊沃

回答

0

我將擴展TabWidget類做我自己的渲染。您可以享受到與其他標籤系統和統一界面的熱插拔優勢,同時仍然可以按照自己的方式繪製標籤欄。 你會在setCurrentTab中開始你的動畫。

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)。

另一種方式是動態創建它並將其附加到視圖層次結構中。

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

......左右。

要獲得活動,您可以再次選擇幾個選項。 其中之一是將View(或ImageView)子類化並實現onTouchEvent。您需要修改上面的代碼來創建新類的實例,而不是ImageView(在Java代碼中很明顯,對於XML,您會將其作爲標記名寫入,並確保實現了構造函數(Context,AttributeSet)調用它的超類的構造函數)。 或者,您可以在您的ImageView上編寫TouchDelegate並使用setTouchDelegate,這對您的情況可能更簡單。

另一種方法是創建一個GestureDetector並使用其hitTest方法將觸摸匹配到您的視圖。對於你所描述的任務來說是過度的,但是當你的應用程序變得更加複雜時,它可能會派上用場。

相關問題