码迷,mamicode.com
首页 > 移动开发 > 详细

Android多种样式的进度条

时间:2016-04-26 19:53:55      阅读:379      评论:0      收藏:0      [点我收藏+]

标签:


---- The mark of the immature man is that he wants to die nobly for a causer while the mark of the mature man is that he wants to live humbly for one 



1. 水平向右的进度条

技术分享



1-1 定义显示进度指示的图形 

drawable目录下progress_v_01.xml

关于shape使用详情可 查阅 点击打开链接

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <!--默认图形大小-->
    <size
        android:width="500dp"
        android:height="50dp" />
    <!--填充颜色 -->
    <solid android:color="#6633CC" />
    <!--边框角度?-->
    <corners android:radius="20dp" />
</shape>

效果图 1-1-1

技术分享


1-2. 在drawable目录下新建一个clip标签的文件 
<?xml version="1.0" encoding="utf-8"?>
<clip xmlns:android="http://schemas.android.com/apk/res/android"
    android:clipOrientation="horizontal"
    android:drawable="@drawable/progress_v_01"
    android:gravity="left">

</clip>

clipOrientation设置方向为水平方向

gravity设置过程中对齐方式为左

drawable 中引用要显示设置的图形 


1-3.在页面布局文件中使用 

在src属性下引入我们1-2中创建的clip标签的文件 

<ImageView
        android:layout_margin="10dp"
        android:background="#e6e6e6"

        android:id="@+id/iv_image_clip_left"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"     
        android:src="@drawable/clip_left_01"/>
   


1.4 在java代码中动态设置进度 


 private ImageView mClipLeftImageView;
    

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mClipLeftImageView = (ImageView) findViewById(R.id.iv_image_clip_left);
        mClipLeftImageView.setImageLevel(10000);

        handler.postDelayed(runnable,2000);
    }
    private int mUnmber = 0;
    private Handler handler = new Handler();
    Runnable runnable = new Runnable() {
        @Override
        public void run() {

            if (mUnmber<=10000){
                mClipLeftImageView.getDrawable().setLevel(mUnmber);
                handler.postDelayed(runnable,20);
                mUnmber+=100;
            }
        }
    };


2. 水平向左的进度条

技术分享


2-1 定义显示进度的图片,这里使用的是1-1中定义的图形 

2-2 创建clip标签文件 

<?xml version="1.0" encoding="utf-8"?>
<clip xmlns:android="http://schemas.android.com/apk/res/android"
    android:clipOrientation="horizontal"
    android:drawable="@drawable/progress_v_01"
    android:gravity="right"
    >
</clip>

clipOrientation设置方向为水平方向

gravity设置过程中对齐方式为右(从而达到进度从右向左的实现效果)

drawable 中引用要显示设置的图形 

2-3 在布局文件中的使用 同1-3;

2-4  java代码中的设置同 1-4;



3.水平向左向右的进度条

技术分享


3-1 定义显示进度的图片,这里使用的是1-1中定义的图形 

3-2 创建clip标签文件 

<?xml version="1.0" encoding="utf-8"?>
<clip xmlns:android="http://schemas.android.com/apk/res/android"
    android:clipOrientation="horizontal"
    android:drawable="@drawable/progress_v_01"
    android:gravity="center_horizontal"
    >
</clip>

clipOrientation设置方向为水平方向

gravity设置过程中对齐方式 为垂直中心对齐(从而达到进度从中间向两边扩展的实现效果)

drawable 中引用要显示设置的图形 


3-3 在布局文件中的使用 同 1-3;

3-4 在java代码中的设置同 1-4;





4.水平向右的圆形进度条

技术分享


4-1 定义使用到的显示进度的图形 drawbale目录下progress_oval_01.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <!--设置黑夜显示大小-->
    <size
        android:width="100dp"
        android:height="100dp" />
    <!--设置图形颜色-->
    <gradient
        android:centerColor="#CC9933"
        android:centerX="0.5"
        android:centerY="0.5"
        android:endColor="#33FF33"
        android:gradientRadius="45"
        android:startColor="#FFFF33"
        android:type="radial" />
    <!--设置图形边框-->
    <stroke
        android:width="2dp"
        android:color="#0000CC" />
    
</shape>


4-2 创建使用到的clip文件 

<?xml version="1.0" encoding="utf-8"?>
<clip xmlns:android="http://schemas.android.com/apk/res/android"
    android:clipOrientation="horizontal"
    android:drawable="@drawable/progress_oval_01"
    android:gravity="left"
    >

</clip>

clipOrientation设置方向为水平方向

gravity设置过程中对齐方式 为左边对齐(从而达到进度从左边向右的扩展的实现效果)

drawable 中引用要显示设置的图形 


3-3 在布局文件中的使用 同 1-3;

3-4 在java代码中的设置同 1-4;




5. 中心向外扩展的圆形进度条

技术分享

5-1 创建显示进度的图形 这里引用的是4-1中创建的图形

5-2 创建对应显示的clip标签文件 

<?xml version="1.0" encoding="utf-8"?>
<clip xmlns:android="http://schemas.android.com/apk/res/android"
    android:clipOrientation="horizontal|vertical"
    android:drawable="@drawable/progress_oval_01"
    android:gravity="center"
    >

</clip>


clipOrientation设置方向为水平方向

gravity设置过程中对齐方式 为中心对齐(从而达到进度从中间向两边的扩展的实现效果)

drawable 中引用要显示设置的图形 


5-3 在布局文件中的使用 同 1-3;

创建ImageView标签,在src属性下进行引用

5-4 在java代码中的设置同 1-4;



6.垂直向上的直线进度条

技术分享

6-1 创建显示进度的图形 

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle"
    >
    <size android:width="5dp"
        android:height="100dp"/>

    <gradient
        android:angle="45"
        android:startColor="#FF9900"
        android:centerColor="#FFFF00"
        android:endColor="#66FF00"
        />
    <corners android:radius="5dp"/>

</shape>


效果图: 6-1-1


技术分享

6-2 创建对应的clip标签文件 

<?xml version="1.0" encoding="utf-8"?>
<clip xmlns:android="http://schemas.android.com/apk/res/android"
    android:clipOrientation="vertical"
    android:drawable="@drawable/progress_oval_01"
    android:gravity="bottom"
    >

</clip>

clipOrientation设置方向为竖直方向

gravity设置过程中对齐方式 底部(从而达到进度从底部向上增加的实现效果)

如果设置为top,那么进度将成为从上到下 

drawable 中引用要显示设置的图形 

6-3 在布局文件中的使用 同 1-3;

创建ImageView标签,在src属性下进行引用

6-4 在java代码中的设置同 1-4;






7.垂直向上的圆形进度条

技术分享



8 综述  

ClipDrawable代表从其它位图上截取一个“图片片段”。在XML文件中使用<clip.../>元素定义ClipDrawable对象,
可指定如下三个属性:

android:drawable:指定截取的源Drawable对象,也可以指定drawable类的子标签

android:clipOrientation:指定截取的方向,可设置为 horizontal  vertical 

android:gravity:指定截取时的对齐方式,可设置为top bottom right center_vertical fill_vertical center_horizontal center  fill  clip_vertaical  start end 等等


使用ClipDrawable对象时可以调用setLevel(int level)方法来设置截取的区域大小,当level为0时,截取的图片片段为空;当level为10000时,截取整张图片。


可以使用ClipDrawable的这种性质控制截取图片的区域大小,让程序不断调用setLevel方法并改变level的值,达到让图片慢慢展开的效果






Android多种样式的进度条

标签:

原文地址:http://blog.csdn.net/zl18603543572/article/details/51250216

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!