Android制作一个简洁的自定义ProgressDialog

Android制作一个简洁的自定义ProgressDialogProgressDialog是安卓应用中常见的交互控件,在有网络请求的地方经常会使用到。如何自定义一个progressdialog是最基本的了,今天就制作一个简洁的ProgressDialog模板,以后可以直接拿过去修改成自己的风格,先看效果图:首先写一个dialog的布局文件<RelativeLayoutxmlns:android=”http://schemas.andr…

ProgressDialog是安卓应用中常见的交互控件,在有网络请求的地方经常会使用到。如何自定义一个progress dialog是最基本的了,今天就制作一个简洁的ProgressDialog模板,以后可以直接拿过去修改成自己的风格,先看效果图:

Android制作一个简洁的自定义ProgressDialog

首先写一个dialog的布局文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/transparent">

    <RelativeLayout
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_centerInParent="true"
        android:background="@drawable/loading_bg"
        android:padding="15dp">

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:gravity="center"
            android:orientation="vertical">

            <ProgressBar
                android:id="@+id/progressBar1"
                style="?android:attr/progressBarStyleLarge"
                android:layout_width="30dip"
                android:layout_height="30dip" />

            <TextView
                android:id="@+id/tv_message"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:maxLines="1"
                android:text="@string/request_loading_info"
                android:textColor="#fff"
                android:textSize="14sp" />
        </LinearLayout>

    </RelativeLayout>

</RelativeLayout>

然后新建一个CustomProgressDialog继承于Dialog

public class CustomProgressDialog extends Dialog {

    public TextView messageTv;

	public CustomProgressDialog(Context context) {
		this(context, R.style.MyDialogStyle, "");
	}

	public CustomProgressDialog(Context context, String string) {
		this(context, R.style.MyDialogStyle, string);
	}

	public CustomProgressDialog(Context context, int theme, String string) {
		super(context, theme);
		setCanceledOnTouchOutside(false);
		setContentView(R.layout.custom_progress_dialog);
		messageTv = (TextView) findViewById(R.id.tv_message);
		messageTv.setText(string);
		getWindow().getAttributes().gravity = Gravity.CENTER;
		getWindow().getAttributes().dimAmount = 0f;
	}

	@Override
	public void dismiss() {
		super.dismiss();
	}

}

上面构造方法用到了一个MyDialogStyle的theme, 在自定义dialog中,需要自定义dialog的样式,所以还需要在styles.xml中写一个dialog样式:

<!-- dialog样式 -->
    <style name="MyDialogStyle">
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowFrame">@null</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
        <item name="android:backgroundDimEnabled">true</item>
    </style>

样式中的各属性的含义,看英文名就应该能知道是什么意思了,其中android:backgroundDimEnabled是表示dialog弹出时,背景要不要变暗。如果想改变转圈的图标颜色,可以使用

android:indeterminateTint=”@color/white_color”

android:indeterminateTintMode=”src_atop”

不过这两个属性只在5.0以上的版本生效,比如我们修改为绿色:

            <ProgressBar
                android:id="@+id/progressBar1"
                style="?android:attr/progressBarStyleLarge"
                android:layout_width="30dip"
                android:layout_height="30dip"
                android:indeterminateTint="@color/color_1CCA8F"
                android:indeterminateTintMode="src_atop"/>

Android制作一个简洁的自定义ProgressDialog

 

这样一个简单的ProgressDialog就做完了,使用的时候可以这样使用:

CustomProgressDialog customProgressDialog = new CustomProgressDialog(this, "登录中...");
customProgressDialog.show();

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

今天的文章Android制作一个简洁的自定义ProgressDialog分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/33591.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注