千家信息网

Android ProgressBar怎么实现进度条效果

发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,这篇文章主要介绍了Android ProgressBar怎么实现进度条效果的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Android ProgressBar怎么实现进度
千家信息网最后更新 2025年01月21日Android ProgressBar怎么实现进度条效果

这篇文章主要介绍了Android ProgressBar怎么实现进度条效果的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Android ProgressBar怎么实现进度条效果文章都会有所收获,下面我们一起来看看吧。

具体效果如下

1.XML布局

                                

2.myprogressbar布局

                                                                                                                                  

3.MainActivity

public class MainActivity extends AppCompatActivity {     private ProgressBar progesss;    private TextView progesssValue;    private LinearLayout full;     @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);          progesss = (ProgressBar) findViewById(R.id.progesss1);        progesssValue = (TextView) findViewById(R.id.progesss_value1);        full = (LinearLayout) findViewById(R.id.full);         initview();    }     private void initview() {         progesss.setProgress(66);        progesssValue.setText(new StringBuffer().append(progesss.getProgress()).append("%"));         setPosWay1();//        ToastUtil.showToast("进度为66");//        Toast.makeText(this,"进度为:--66",Toast.LENGTH_SHORT).show();         //        full.setOnTouchListener(new View.OnTouchListener() {////            @Override//            public boolean onTouch(View v, MotionEvent event) {//                int w = getWindowManager().getDefaultDisplay().getWidth();//                switch (event.getAction()) {//                    case MotionEvent.ACTION_DOWN://                        x1 = (int) event.getRawX();//                        progesss.setProgress(100 * x1 / w);//                        setPos();//                        break;//                    case MotionEvent.ACTION_MOVE://                        x2 = (int) event.getRawX();//                        dx = x2 - x1;//                        if (Math.abs(dx) > w / 100) { //改变条件 调整进度改变速度//                            x1 = x2; // 去掉已经用掉的距离, 去掉这句 运行看看会出现效果//                            progesss.setProgress(progesss.getProgress() + dx * 100 / w);//                            setPos();//                        }//                        break;//                    case MotionEvent.ACTION_UP://                        break;//                }//                return true;//            }//        });      }      @Override    public void onWindowFocusChanged(boolean hasFocus) {        super.onWindowFocusChanged(hasFocus);        if (hasFocus) {            setPos();        }    }    private void setPosWay1() {        progesssValue.post(new Runnable() {            @Override            public void run() {                setPos();            }        });    }     /**     * 设置进度显示在对应的位置     */    public void setPos() {        int w = getWindowManager().getDefaultDisplay().getWidth();        Log.e("w=====", "" + w);        ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) progesssValue.getLayoutParams();        int pro = progesss.getProgress();        int tW = progesssValue.getWidth();        if (w * pro / 100 + tW * 0.3 > w) {            params.leftMargin = (int) (w - tW * 1.1);        } else if (w * pro / 100 < tW * 0.7) {            params.leftMargin = 0;        } else {            params.leftMargin = (int) (w * pro / 100 - tW * 0.7);        }        progesssValue.setLayoutParams(params);     }}

关于"Android ProgressBar怎么实现进度条效果"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"Android ProgressBar怎么实现进度条效果"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

0