关于自定义progressBar的制

关于自定义progressBar的制作
progressBar:
1. progressBar存在两种进度, android:progress和android:secondaryProgress。
android:progress:分为精确的和不精确的,android:indeterminate="true|false"来决定进度条是否是精确的;精确的意思是我们能够明确的看到
进度在进度条中的长度变化,而不确定的则是在进度条上看不到进度的变化。 当我们不知道一个操作需要多久来完成,这个时候就
需要用到不确定的Progressbar ;
                        andorid:secondaryProgress:是为缓存需要涉及的,看电影电视剧时,会有一条缓存的进度条,缓存的进度条就是android:secondaryProgress。
        
不精确显示的进度条                                                精确显示的进度条
     2.progressBar的样式总的来说有两种,一种是水平的,一种是环形的。
                Widget.ProgressBar.Horizontal
Widget.ProgressBar.Small
Widget.ProgressBar.Large
Widget.ProgressBar.Inverse
Widget.ProgressBar.Small.Inverse
Widget.ProgressB
ar.Large.Inverse
   细节我就不多说了 ,   下面咱们来看列子

制作一个能及时看到进度值得进度条是很多软件需要做的,这里我只介绍上面数字的的实现
import android.app.Activity;
import android.graphics.drawable.ClipDrawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;

import java.util.Timer;
import java.util.TimerTask;


public class MainActivity extends Activity {
    ImageView imageView;
    ClipDrawable clipDrawable;
    ProgressBar progressBar1;
    TextView show_progress;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        imageView = (ImageView) findViewById(R.id.image);
        clipDrawable = (ClipDrawable) imageView.getDrawable();
        progressBar1 = (ProgressBar) findViewById(R.id.horizontal_bar);
        show_progress = (TextView) findViewById(R.id.show_progress);

        final Handler handler = new Handler(){
            @Override
            public void handleMessage(Message msg) {
                if (msg.what == 0x132)
                {
                    System.out.println(clipDrawable.getLevel());
//                    设置当前的进度值
                    progressBar1.setProgress(progressBar1.getProgress()+1);
//                    获取进度条的长度
                    int len = progressBar1.getWidth();
//                    获取当前的进度值
                    int current_progress = progressBar1.getProgress();
//                    获取进度条的开始x轴位置
                    int beginx = (int) progressBar1.getX();
//                    根据计算获得当前进度的位置
                    int currentX = (int) ((current_progress/100.0f)*len);
//                    获取进度条的结束位置
                    int endX = len+beginx;
                    show_progress.setX(currentX);
                    show_progress.setText(current_progress+"%");
                    System.out.println("begin:"+beginx+"currentx"+currentX+"end"+endX);
                    clipDrawable.setLevel(clipDrawable.getLevel()+100);
                }
            }
        };
        new Timer().schedule(new TimerTask() {
            @Override
            public void run() {
                Message msg = new Message();
                msg.what = 0x132;
                handler.sendMessage(msg);
                if (clipDrawable.getLevel()>10000)
                    cancel();
            }
        },0,300);
    }
 从代码中可以知道显示数字的只是一个TextView,只是动态的改变他的X坐标就可以让他随着进度改变。
代码包会随后给出。有什么问题可以问我。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值