4

我的问题是双重的。我目前有一个 seekBar,它不是定制的,但我担心将来需要它。我的问题围绕着拇指图像:

  1. 我的 seekBar 拇指需要是可点击的,因为我希望在触摸时发生动作 我设法使用 onTouchlistener 实现了问题是我希望在单击拇指时获得视觉反馈图像,我尝试使用可绘制选择器来实现无济于事。

  2. 第二个问题是我想在方向变化时为我的搜索栏拇指设置动画。这个我不知道该怎么做...

任何帮助将不胜感激!

编辑: 我试图实现的动画是旋转,因此图像将始终是“直立的”

我尝试用于点击反馈的代码如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/camera_button_feedback" android:state_pressed="true"/>
<item android:drawable="@drawable/camera_button_feedback" android:state_selected="true"/>
<item android:drawable="@drawable/camera_button_icon"/>

</selector>
4

3 回答 3

2

所以我经过深思熟虑后所做的是在拇指下创建一个视图,该视图随着拇指前进并使搜索栏的拇指不可见,以便获得触摸事件并根据需要为底层视图设置动画

于 2012-08-21T14:49:49.547 回答
0

问题 1.) 的解决方案:我已经亲自对此进行了测试,因此我可以向您保证它可以正常工作,并且您获得视觉反馈。

1.) 在您的项目中创建一个名为“xml”的文件夹,然后向其中添加一个名为 thumb_drawable.xml 的 XML 文件。在此文件中定义以下内容:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item 
android:state_pressed="true"
android:drawable="@drawable/seek_thumb_pressed">
</item>
<item 
android:drawable="@drawable/seek_thumb_normal">  
</item>
</selector>

'seek_thumb_normal' 是默认的 android seekbar thumb,下载该图像的链接如下:http ://www.tutomobile.fr/wp-content/uploads/2011/02/seek_thumb_normal.png 。'seek_thumb_pressed' 是默认 android seekbar thumb 的修改版本,只是有不同的颜色。现在,您可以轻松地将其替换为您想要的其他图像,方法是将该图像放在您的可绘制文件夹中,然后在此处引用该名称。

2.) 这是我用来在布局文件中定义 SeekBar 的代码:

<SeekBar android:id="@+id/seekbar"
         android:max="100"
         android:layout_width="fill_parent"
         android:layout_height="30dp" 
         android:minWidth="30dp"
         android:minHeight="30dp" 
         android:thumb="@xml/thumb_drawable"/> 

问题 2:现在,这是我有点困惑的地方,因为您说“我要实现的动画是旋转,因此图像将始终是“直立的”,默认情况下,Android 会处理当您将手机的方向从纵向更改为横向时图像,因此您的图像默认保持直立。我刚刚在冰淇淋三明治上测试了这一点,当我改变方向时,搜索栏拇指自行旋转。所以,除非我'已经误解或者你有其他想法,在处理方向转换时你不需要动画任何东西。如果你有其他想法,请告诉我,我会帮助你解决这个问题。

于 2012-08-16T17:57:09.563 回答
-4

检查以下代码段,它可能会对您有所帮助...

         seekBar = (SeekBar)findViewById(R.id.seekBar);
    seekBar.setOnTouchListener(this);
          private void updateSeekProgress() {
    if (mediaPlayer.isPlaying()) {
        seekBar.setProgress((int)(((float)mediaPlayer.getCurrentPosition() / lengthOfAudio) * 100));
        handler.postDelayed(r, 1000);
    }
}   
于 2012-08-21T14:05:47.937 回答