奇妙な問題が発生しています。私のアプリでは、SeekBar
2 つの状態を持つ親指を持つカスタムがあります。をクリックするseekBar
と、親指がゆがみ、数秒後に通常の状態に戻ります。対応するMediaPlayer
オブジェクトは期待どおりにすぐに反応します。問題は単なる視覚的な問題です。これを説明するスナップショット:
通常の動作:
seekBar
をクリックすると:
私はそれについて何が悪いのか分かりません。
シークバー:
<SeekBar
android:id="@+id/seekBarMain"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_gravity="bottom"
android:layout_marginBottom="5dp"
android:indeterminate="false"
android:maxHeight="3dp"
android:maxWidth="450dp"
android:minHeight="3dp"
android:paddingLeft="9dp"
android:paddingRight="9dp"
android:progressDrawable="@drawable/pb"
android:thumb="@drawable/thumb_state" />
Thumb に使用される Drawable:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/thumb_pressed" android:state_enabled="true" android:state_pressed="true"/>
<item android:drawable="@drawable/thumb" android:state_pressed="false"/>
</selector>
OnTouchListener:
@Override
public boolean onTouch(View v, MotionEvent event) {
if (v.getId() == R.id.seekBarMain) {
if (mp.isPlaying()) {
int playPositionInMillisecconds = (mediaFileLengthInMilliseconds / 100)
* sb.getProgress();
mp.seekTo(playPositionInMillisecconds);
} else {
int playPositionInMillisecconds = (mediaFileLengthInMilliseconds / 100)
* sb.getProgress();
mp.start();
mp.seekTo(playPositionInMillisecconds);
btnPlay.setBackgroundResource(R.drawable.button_pause);
primarySeekBarProgressUpdater();
}
}
return false;
}
なぜそれが起こるのか?