Android自定义控件——仿微信半透明加载框
来源:互联网 发布:阿里云华北2 编辑:程序博客网 时间:2024/05/23 00:07
在我们的app中不免回遇到耗时操作,这时我们给个加载框进行过度,使用户体验大大加强。
一、CustomDialog类的编写
package com.daqsoft.jingguan.weight;import android.app.Dialog;import android.content.Context;import android.view.KeyEvent;import android.view.WindowManager;import android.widget.TextView;import com.daqsoft.jingguan.R;/** * 自定义透明的dialog */public class CustomDialog extends Dialog{ private String content; public CustomDialog(Context context, String content) { super(context, R.style.CustomDialog); this.content=content; initView(); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { switch (keyCode){ case KeyEvent.KEYCODE_BACK: if(CustomDialog.this.isShowing()) CustomDialog.this.dismiss(); break; } return true; } private void initView(){ setContentView(R.layout.dialog_view); ((TextView)findViewById(R.id.tvcontent)).setText(content); setCanceledOnTouchOutside(true); WindowManager.LayoutParams attributes = getWindow().getAttributes(); attributes.alpha=0.9f; getWindow().setAttributes(attributes); setCancelable(false); }}
二、建立自定义style
<!-- 自定义dialog的样式 --> <style name="CustomDialog"> <item name="android:windowFrame">@null</item><!--边框--> <item name="android:windowIsFloating">true</item><!--是否浮现在activity之上--> <item name="android:windowIsTranslucent">false</item><!--半透明--> <item name="android:windowNoTitle">true</item><!--无标题--> <item name="android:windowBackground">@drawable/bg_dialog_custom</item><!--背景透明--> <item name="android:backgroundDimEnabled">false</item><!--模糊--> <item name="android:backgroundDimAmount">0.6</item> </style>
三、背景drawable/bg_dialog_custom
在drawable中建立bg_dialog_custom.xml文件
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="#ff333333" /> <corners android:radius="5dp" /></shape>
四、layout布局dialog_view
<!-- 加载对话框布局 --><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:orientation="horizontal" android:padding="10dp"> <ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:indeterminateDrawable="@drawable/indeterminate_drawable" android:indeterminateDuration="1800" /> <TextView android:id="@+id/tvcontent" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingLeft="10dp" android:paddingRight="10dp" android:text="加载中" android:textColor="#ffffff" android:textSize="14sp" /></LinearLayout>
上面的android:indeterminateDrawable=”@drawable/indeterminate_drawable”就是给ProgressBar加一个样式
五、ProgressBar加一个样式
建立文件indeterminate_drawable.xml放入drawable文件夹下
<?xml version="1.0" encoding="utf-8"?><rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@mipmap/loading" android:fromDegrees="0" android:pivotX="50%" android:pivotY="50%" android:toDegrees="360"></rotate>
加载的图片这里下载,下载后放入mipmap-xhdpi中
六、使用
上面基本就把一个自定义半透明的加载框写完了,怎么使用呢,一般我们把他建立在Baseactivity中
配置如下
private CustomDialog logDialog; //方法 //下面是加载框 public void showLoadingDialog() { if (logDialog == null) { logDialog = new CustomDialog(this,"数据加载中"); } logDialog.show(); } public void dismissLoadingDialog() { if (logDialog != null) { logDialog.dismiss(); } }
这样之后使用就太方便了,对应的Activity继承BaseActivity直接调用上面方法即可实现
阅读全文
0 0
- Android自定义控件——仿微信半透明加载框
- Winform----自定义控件之背景半透明遮罩加载控件
- android 动态加载自定义控件
- android 动态加载自定义控件
- Android自定义控件——组合控件
- Android自定义控件——自定义属性
- Android 自定义控件——自定义属性
- android 自定义控件 —— 自定义属性
- Android自定义控件——自定义属性
- Android自定义控件——自定义属性
- Android自定义控件——自定义Preference
- Android自定义控件——自定义属性
- Android自定义控件——自定义属性
- Android自定义控件——自定义属性
- Android自定义控件——自定义属性
- Android自定义控件—CouponsView
- Android圆角图—自定义控件
- Android自定义控件——ListView的下拉刷新与上拉加载
- java正则表达式引起死循环导致程序卡主
- Git初始化步骤
- Python scikit-learn 模块svc方法的参数解释
- Hibernate中List<String>怎么处理
- 变态的台阶
- Android自定义控件——仿微信半透明加载框
- Python Web概述
- lightoj-1104 生日悖论 有意思
- Sublime Text3中用一个编译配置文件同时设置Python2和Python3解释选项
- C++浅拷贝和深拷贝
- Binder通信三(Binder设计与实现)
- 剑指Offer:二叉树的镜像(一刷)
- Spring MVC拦截器+注解方式实现防止表单重复提交
- python 操作csv