2014年5月20日 星期二

android seekbar custom style

seekbar 好像跟 processbar差不多~

不過seekbar 我覺得是指user input, processbar比較偏系統自動運作(進度)

layer_bar.xml

先決定自定的顏色, 用layer-list製作
background 背景色
secondaryProgress 前景色(bar條顏色)
若是thumb(指標)~ 要用製作的話就在這邊加好像就會出來~
不過我的指標是用自訂圖檔, 就不用再寫~~

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:id="@android:id/background">
    <shape>
        <stroke android:color="#FFBB73"  />
        <solid android:color="#FFBB73"  />
    </shape>
</item>

<item android:id="@android:id/secondaryProgress">
    <clip>
        <shape>
            <stroke android:color="#6DE76E"  />
            <solid android:color="#6DE76E"  />
        </shape>
    </clip>
</item>

</layer-list>

resources xml:

minHeight/maxHeight 可改bar的寬度(高度)
thumb 主要是換中間的圖標(自己加一個png進去)
progressDrawable 是左半邊繪
indeterminateDrawable 算底圖

<style name="tallerBarStyle" parent="@android:style/Widget.SeekBar">
    <item name="android:indeterminateOnly">false</item>
    <item name="android:progressDrawable">@drawable/layer_bar</item>
    <item name="android:indeterminateDrawable">@drawable/layer_bar</item>
    <item name="android:minHeight">8dip</item>
    <item name="android:maxHeight">20dip</item>
    <item name="android:thumb">@drawable/monster09</item>
 </style>

xml:

max 為bar的最高值, 0~android:max

<SeekBar
        android:id="@+id/seekBar1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="111dp"
        android:max="9"
        style="@+style/tallerBarStyle"/>

code:

以上設定應該~ 就可以決定外型了~ 再來就是加bar的listener...
通常就是bar值變動~ 改些資料值~

      bar1.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
            @Override      
            public void onStopTrackingTouch(SeekBar seekBar) {     
                // TODO Auto-generated method stub     
            }      

            @Override      
            public void onStartTrackingTouch(SeekBar seekBar) {    
                // TODO Auto-generated method stub     
            }      

            @Override      
            public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {    
                // TODO Auto-generated method stub
                showInfo();
            }      
        });

----------------------------------------------------------------------------------
如果只改指標~ 那條BAR不介意細細的~ 有更簡單的寫法~
不用做style...只做簡單顏色可用colorFiliter

Drawable thumb = getResources().getDrawable( R.drawable.monster09 );
bar2.setThumb(thumb);
bar2.getProgressDrawable().setColorFilter(Color.RED, PorterDuff.Mode.SRC_IN);


android textview scroll

xml:

<TextView
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:scrollbarStyle="insideOverlay"
        android:scrollbars="vertical"
        android:text="TextView"
        android:textAlignment="center"
        android:textSize="25sp"
        android:fadeScrollbars="false" />



code:

private TextView tv1= null;
tv1.setMovementMethod(new ScrollingMovementMethod());