2013年7月17日水曜日

実行時にSeekBarの色を変える

実行時にSeekBarの色を変える

XMLにおいて、色を変える方法については、次のサイトで紹介されています。
AndroidのProgressBar / SeekBarに画像を使う
Cool android SeekBar, custom made by me

これらを参考にさせて頂いて、下記のとおり、実行時に色を変えるプログラムを作ってみました。

        sb = (SeekBar)llMain.findViewById(R.id.SeekBar_Volume);
        if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB){
        /*
        * LightではSeekBarが見えにくいので、色を着ける。
        * HONEYCOMB未満でこれを実行すると、即時の描画が行われない。
        * ClipDrawableは、描き変えや、読み出しを行えないため、新規に作成する。
        */
       LayerDrawable ld = (LayerDrawable)sb.getProgressDrawable();
       ColorDrawable dBlue = new ColorDrawable(0xff4f4fdf);
       ClipDrawable cd = new ClipDrawable(dBlue, 0x03, ClipDrawable.HORIZONTAL);
    ld.setDrawableByLayerId(android.R.id.progress, cd);
        }

Android3.0以上から、ホロというテーマが使われています。私はテーマをLightに変えました。すると、何故か、SeekBarに色が付かなくなりました。そこで、色を着けてやろうということです。

本来なら、テーマにおいて上記と同等の修正をすべきでしょう。テーマの技法を使って色を変える方法が分かる人は、各自のブログにでも載せておきましょう。

0 件のコメント:

コメントを投稿