2010-10-12 86 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方法将触摸匹配到您的视图。对于你所描述的任务来说是过度的,但是当你的应用程序变得更加复杂时,它可能会派上用场。

相关问题