SeekBar滑块动画

4
我的问题有两个方面。 我有一个SeekBar,目前它没有自定义,但我担心将来需要自定义。 我的问题围绕着thumb图像展开:
  1. 我的SeekBar thumb需要可点击,因为我希望在被触摸时执行某个操作。我使用onTouchlistener实现了这一点,但问题是当thumb被点击时,我想要有一个可视反馈图像,我尝试使用drawable selector实现,但无效。
  2. 第二个问题是,当屏幕方向改变时,我想要动画播放我的SeekBar thumb。我不知道该如何实现...
任何帮助都将不胜感激!
编辑: 我正在尝试实现的动画是旋转,所以图像将始终是"正常的"
我尝试使用的用于单击反馈的代码如下:
<?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>

你想应用什么样的动画?如果您可以发布迄今为止尝试实现seekBar拇指点击的代码,那将非常有帮助,这样像我这样尝试帮助您的人就可以轻松导入该代码并尝试解决问题。 - A Random Android Dev
3个回答

2

经过长时间的考虑,我做的是在拇指下创建一个视图,随着拇指的移动而进展,并使seekbar的拇指不可见以获取触摸事件,只需根据需要对底层视图进行动画处理。


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' 是默认的安卓 seekbar 拇指,下载该图片的链接为:http://www.tutomobile.fr/wp-content/uploads/2011/02/seek_thumb_normal.png。而 'seek_thumb_pressed' 则是默认安卓 seekbar 拇指的修改版本,只是颜色不同。现在,您可以通过将所需图片放置在 drawable 文件夹中并在此处引用该名称来轻松替换它。

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默认情况下会处理当您将手机从纵向变为横向时图像的旋转,因此您的图像默认情况下保持直立。我刚刚在Ice-cream Sandwich上测试了一下,当我改变方向时,拖动条的滑块自动旋转。所以,除非我误解了或者您有其他想法,否则在处理方向变换时,您不需要执行任何动画。如果您有其他想法,请告诉我,我会帮助您解决问题。

谢谢帮忙。虽然你的建议与我已经尝试过的很接近,但我会尽快尝试它。关于动画,我禁用了方向更改...因此更改不会自动发生...我想我应该提到这一点。 - zwebie
等等,那么当你说“我想在方向改变时动画化我的SeekBar拇指”和“我试图实现的是旋转,使图像始终保持“直立”时,你指的是什么?现在你说你已经禁用了方向更改(我想你的意思是你已经将方向锁定为纵向),所以如果你锁定了方向,那么你的屏幕就永远不会旋转了,对吧? - A Random Android Dev
好的,我尝试了选择器文件,但现在拖动滑块时图标会改变,却不会恢复原状。请注意,我正在使用 onTouchListener 而不是 seekbarchangedlistener。关于动画,我锁定了方向为纵向,但我仍然通过 orientationListener 处理方向变化。 - zwebie
我通过在代码中手动更改图像来解决选择器问题...虽然不是很好的解决方案,但是有效... - zwebie

-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);
    }
}   

1
很抱歉,但我不认为这样有任何解决我的问题的方法。 - zwebie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接