Android 常用控件自定義樣式RadioButton、CheckBox、ProgressBar、


一、RadioButton / CheckBox  

  系統自帶的RadioButton/CheckBox的樣式,注定滿足不了實際運用中的情況,有時候自定義自己的樣式;此次把自己中工作學習過程中所學到的東西總結如下:

  先看效果圖:

    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:button="@null"
        android:drawableRight="@drawable/rb_background"
        android:text="AAA" />

    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:button="@null"
        android:checked="true"
        android:drawableRight="@drawable/rb_background"
        android:text="BBB" />
rb_background.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/bg2" android:state_checked="true" android:state_enabled="true"></item>
    <item android:drawable="@drawable/bg1" android:state_checked="false"></item>
</selector>

都比較簡單,換作CheckBox也是一樣的道理,不再舉例;
  另:在使用RadioGroup的時候,居然突然想不起來怎么獲取當選前擇的是哪一項,經過查證,通過RadioGroup.OnCheckedChangeListener接口即可獲取選擇項改變事件回調捕獲選項id;

        group.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
            }
        });

二、ProgressBar
  1、使用圖片實現滾動效果.原始圖像

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/image_progress"
    android:pivotX="50%"
    android:pivotY="50%" >

</rotate>

    <ProgressBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:indeterminateDrawable="@drawable/my_progress" />

  2、自定義ProgressBar顏色

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="360" >

    <shape
        android:innerRadiusRatio="3"
        android:shape="ring"
        android:thicknessRatio="8"
        android:useLevel="false" >
        <gradient
            android:centerColor="#FFFFFF"
            android:centerY="0.50"
            android:endColor="#FFFF00"
            android:startColor="#000000"
            android:type="sweep" //
            android:useLevel="false" />
    </shape>

</rotate>

  3、自定義horizontal進度條

  自定義ProgressBar橫向樣式進度條需要配置一個layer-list,其中包括3個item分別是background,secondaryProgress,progress分別用於表示ProgressBar的背景,次要進度(如:表示播放器緩沖的進度),進度的樣式;

<?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>
            <corners android:radius="5dip" />

            <gradient
                android:angle="270"
                android:centerColor="#ff5a5d5a"
                android:centerY="0.75"
                android:endColor="#ff747674"
                android:startColor="#ff9d9e9d" />
        </shape>
    </item>
    <item android:id="@android:id/secondaryProgress">
        <clip>
            <shape>
                <corners android:radius="5dip" />

                <gradient
                    android:angle="270"
                    android:centerColor="#80ffb600"
                    android:centerY="0.75"
                    android:endColor="#a0ffcb00"
                    android:startColor="#80ffd300" />
            </shape>
        </clip>
    </item>
    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <corners android:radius="5dip" />

                <gradient
                    android:angle="270"
                    android:endColor="#AEEEEE"
                    android:startColor="#FF3030" />
            </shape>
        </clip>
    </item>

</layer-list>

 

    <ProgressBar
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="match_parent"
        android:layout_height="10dip"
        android:progress="20"
        android:max="100"
        android:progressDrawable="@drawable/pb_background"/>




未完待續...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM