recyclerView で、サムネイル画像を横に並べて表示。その下にseekbar を配置して、recyclerView と同期させる。
サムネイル画像を右から並べるか、左から並べるか、recyclerView はリバースメソッドで切り替えができるが、seekbar はメソッドで用意されていない。
プログレスバーの伸び方は数値変換で対応できる。
プログレスバーの伸び方の見た目は、プログレスバーとプログレスバックグランドの色を入れ替えれば、リバースしたことになる。
用意されている変更のメソッドは、APIレベルの高いもの用でlollipop対象だとエラーとなる。
(用意されてる色変更メソッドで対象OSに使えるなら、それを使う。)
トライエンドエラーで動きそうな方法を残す。
方法は、メインアクティビティーでdrawableに作ったレイアウトファイルを指定するだけ。
【MainActivity.java】
Drawable drawable = ResourcesCompat.getDrawable( getResources(), R.drawable.seekbar_progress_left_start, null );
SeekBar seekBar = (SeekBar)findViewById( R.id.seekbar );
seekBar.setProgressDrawable( drawable );
ここでは、
seekbar_progress_right_start.xml
seekbar_progress_left_start.xml
を切り替え設定して見かけ上でプログレスバーの伸び方を反転している。
見かけが反転し、右から左へ延びるとき、
progress = MaxNo - progress;
seekBar.setProgress( progress );
これで補正する。
【activity_main.xml】
< ?xml version="1.0" encoding="utf-8"?>
< androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
< SeekBar
android:id="@+id/seekbar"
android:layout_width="0dp"
android:layout_height="30dp"
android:progressDrawable="@drawable/seekbar_progress_right_start"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</ androidx.constraintlayout.widget.ConstraintLayout>
drawableに色を入れ替えた xml ファイルを2つ用意する。
色設定をファイル別に入れ替えているだけ。
「android:color="@color/teal_200"」「android:color="#aaaaaa" 」
など。
【seekbar_progress_right_start.xml】
< ?xml version="1.0" encoding="utf-8"?>
< layer-list xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android">
< item android:id="@android:id/background">
< shape android:shape="line" >
< stroke
android:width="4dp"
android:color="@color/teal_200"/>
</ shape>
</ item>
< item android:id="@android:id/progress" >
< clip>
< shape android:shape="line" >
< stroke android:width="4dp"
android:color="#aaaaaa" />
</ shape>
</ clip>
</ item>
</ layer-list>
【seekbar_progress_left_start.xml】
< ?xml version="1.0" encoding="utf-8"?>
< layer-list xmlns:android="http://schemas.android.com/apk/res/android">
< item android:id="@android:id/background">
< shape android:shape="line" >
< stroke
android:width="4dp"
android:color="#aaaaaa"/>
</ shape>
</ item>
< item android:id="@android:id/progress" >
< clip>
< shape android:shape="line" >
< stroke android:width="4dp"
android:color="@color/teal_200" />
</ shape>
</ clip>
</ item>
</ layer-list>
疲れる。散々悩み、やれることをやって最後に報われたからいいけど、心折れる寸前だったわ。
とりあえず、エミュレーター上で動いているので大丈夫かな。
lollipopデバイスに途中状態でインストールテストをしてみよう。