2010-10-12 1 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). (конечно, если вы сказали, скажем, «@ + foo/bar» в файле XML, вы должны использовать 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) для вызова его конструктора суперкласса). Или вы можете написать TouchDelegate и использовать setTouchDelegate на своем ImageView, который, вероятно, проще в вашем случае.

Другим подходом было бы создать GestureDetector и сопоставить штрихи с вашим видом, используя его метод hitTest. Для задачи, которую вы описываете, это избыток, но это может пригодиться, когда ваше приложение становится более сложным.