Android ProgressBar&ProgressDialog学习

我博客的相关说明

视频学习:B站:天哥在奔跑

一、ProgressBar

1.新建一个Activity→ProgressActivity。

2.设置相应布局文件:

基础代码:
	<ProgressBar
        android:id="@+id/Tes_PGB"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="visible" 
        style="@style/Widget.AppCompat.ProgressBar"
        android:max="100"
        android:progress="10"
        android:secondaryProgress="50"
        />

visibility标签有三个属性:visible(可见)、gone(不可见且位置移除)、invisible(不可见但位置保留)。
style标签设置ProgressBar的风格。
max标签设置进度条的最大值。
progress标签设置当前进度。
secondprogress标签设置二级进度。

3.模拟加载进度

public class ProgressTest extends AppCompatActivity {
     

    private ProgressBar pgb;
    private Button PGB_btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
     
        super.onCreate(savedInstanceState);
        setContentView(R.layout.progress_test);
        pgb = findViewById(R.id.Tes_PGB2);
        PGB_btn = findViewById(R.id.PGB_BTN);

        PGB_btn.setOnClickListener(new View.OnClickListener() {
     
            @Override
            public void onClick(View v) {
     
                handler.sendEmptyMessage(0);
            }
        });
    }
    Handler handler = new Handler(){
     
        @Override
        public void handleMessage(@NonNull Message msg) {
     
            super.handleMessage(msg);
            if (pgb.getProgress() < 100){
     
                handler.postDelayed(runnable,50);
            }else {
     
                Toast.makeText(getApplicationContext(),"加载完成",Toast.LENGTH_SHORT).show();
            }
        }
    };
    Runnable runnable = new Runnable() {
     
        @Override
        public void run() {
     
            pgb.setProgress(pgb.getProgress()+1);
            handler.sendEmptyMessage(0);
        }
    };
}
//视频内容,小白暂时看不懂,但能实现相应效果。

4.自定义控件样式

搜索图片类似于:
Android ProgressBar&ProgressDialog学习_第1张图片

4.1相应布局文件设置:

4.1.1 drawable文件

在drawable文件下新建File Root element属性为:animated-rotate
Android ProgressBar&ProgressDialog学习_第2张图片

相应代码块:

<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/icon_user"
    android:pivotX="50%"
    android:pivotY="50%">
animated-rotate>

pivotX/pivotY标签:设置图片旋转中心(锚点),这里表示设置图片长/宽的百分之50为旋转中心。
drawable标签:这里是自己DIY的相应的图片的i名称。

4.1.2 layout代码块:

<ProgressBar
        android:id="@+id/Tes_PGB"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:indeterminateDrawable="@drawable/bg_progressbar"/>

indeterminateDrawable标签:找到之前的drawable文件。

还可以通过定义style文件来实现DIY的ProgressBar!示例:其它控件也可以通过定义style文件来DIY自己的样式
示例过程:
·e1:打开values文件下styles.xml文件
·e2:添加模块相应代码:

<style name="MyProgressBar">
        "android:indeterminateDrawable">@drawable/bg_progressbar
style>

之后便可以在相应的控件下用style语句来设置相应的控件了:style="@style/MyProgressBar"

<ProgressBar
        android:id="@+id/Tes_PGB"
        style="@style/MyProgressBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

二、ProgressDialog

1.相应控件

在相应layout文件中添加一个Button控件,以便之后弹出Dialog
相应代码:

<Button
       android:id="@+id/pgsb_btn1"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="ProgressDialog"
       android:textSize="20sp"
       android:textAllCaps="false"/>

2.具体属性

2.1旋转样式

在相应Activity文件中声明、找到控件。并设置点击事件:

ProgressDialog设置与属性和AlertDialog比较相似,视频:AlertDialog

import ...
public class ProgressTest extends AppCompatActivity {
     

    private PGB_btn_Dialog;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
     
        super.onCreate(savedInstanceState);
        setContentView(R.layout.progress_test);
        PGB_btn_Dialog1 = findViewById(R.id.pgsb_btn1);
        PGB_btn_Dialog1.setOnClickListener(new View.OnClickListener() {
     
            @Override
            public void onClick(View v) {
     
                ProgressDialog progressDialog = new ProgressDialog(ProgressTest.this);
                progressDialog.setTitle("提示:");        //设置Dialog标题
                progressDialog.setMessage("正在加载");    //设置Dialog显示内容
                //设置监听事件:当Dialog被意外取消时,弹出Toast
                progressDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
     
                    @Override
                    public void onCancel(DialogInterface dialog) {
     
                    Toast.makeText(ProgressTest.this,"cancel......",Toast.LENGTH_SHORT).show();
                    }
                });
                //设置属性:点击Dialog区域外Dialog不会退出
                progressDialog.setCancelable(false);
                 //调用show()方法让Dialog显示出来
                progressDialog.show();                   
            }
        });
    }
}

2.2进度条样式

这个样式和旋转样式大体相近,只用在代码里边设置相应的style就可以:
progressDialog2.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

public void onClick(View v) {
     
    ProgressDialog progressDialog = new ProgressDialog(ProgressTest.this);
    progressDialog.setTitle("提示:");        //设置Dialog标题
    progressDialog.setMessage("正在加载");    //设置Dialog显示内容
    //设置属性:点击Dialog区域外Dialog不会退出
    progressDialog.setCancelable(false);
     //调用show()方法让Dialog显示出来
     //##设置相应的style文件##
    progressDialog2.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    progressDialog.show();                   
}

当然这里的ProgressDialog并不会加载,实现相应效果可以看之前的Handler的实现方法。

同样ProgressDialog也可以和AlertDialog相同,可以添加相应的按钮,并且设置相关的点击事件。视频:AlertDialog

你可能感兴趣的:(Android自学笔记,android)