iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android 自定义Dialog 实例
  • 202
分享到

Android 自定义Dialog 实例

自定义dialogdialogAndroid 2022-06-06 08:06:00 202人浏览 薄情痞子
摘要

开发中经常需要请求网络获取数据,我们在请求网络到得到数据时当中需要等待一些时间,为了增加用户体验,我们一般会用一个Dialog来提示用户我们在加载网络数据。 今天我们来实现如下

开发中经常需要请求网络获取数据,我们在请求网络到得到数据时当中需要等待一些时间,为了增加用户体验,我们一般会用一个Dialog来提示用户我们在加载网络数据。

今天我们来实现如下效果的加载中Dialog。

 

从图中我们可以看到要这个Dialog是图片还有文字组成的,(不过我这里使用代码实现的,没有用图片),以下是这个加载图形的代码:


public class LVCircularRing extends View {
private float mWidth = 0f;
private float mPadding = 0f;
private float startAngle = 0f;
private Paint mPaint;
public LVCircularRing(Context context) {
 this(context, null);
}
public LVCircularRing(Context context, AttributeSet attrs) {
 this(context, attrs, 0);
}
public LVCircularRing(Context context, AttributeSet attrs, int defStyleAttr) {
 super(context, attrs, defStyleAttr);
 initPaint();
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
 super.onMeasure(widthMeasureSpec, heightMeasureSpec);
 if (getMeasuredWidth() > getHeight())
  mWidth = getMeasuredHeight();
 else
  mWidth = getMeasuredWidth();
 mPadding = 5;
}
@Override
protected void onDraw(canvas canvas) {
 super.onDraw(canvas);
 mPaint.setColor(Color.argb(100, 255, 255, 255));
 canvas.drawCircle(mWidth / 2, mWidth / 2, mWidth / 2 - mPadding, mPaint);
 mPaint.setColor(Color.WHITE);
 RectF rectF = new RectF(mPadding, mPadding, mWidth - mPadding, mWidth - mPadding);
 canvas.drawArc(rectF, startAngle, 100
   , false, mPaint);//第四个参数是否显示半径
}
private void initPaint() {
 mPaint = new Paint();
 mPaint.setAntiAlias(true);
 mPaint.setStyle(Paint.Style.STROKE);
 mPaint.setColor(Color.WHITE);
 mPaint.setStrokeWidth(8);
}
public void startAnim() {
 stopAnim();
 startViewAnim(0f, 1f, 1000);
}
public void stopAnim() {
 if (valueAnimator != null) {
  clearAnimation();
  valueAnimator.setRepeatCount(1);
  valueAnimator.cancel();
  valueAnimator.end();
 }
}
ValueAnimator valueAnimator;
private ValueAnimator startViewAnim(float startF, final float endF, long time) {
 valueAnimator = ValueAnimator.ofFloat(startF, endF);
 valueAnimator.setDuration(time);
 valueAnimator.setInterpolator(new LinearInterpolator());
 valueAnimator.setRepeatCount(ValueAnimator.INFINITE);//无限循环
 valueAnimator.setRepeatMode(ValueAnimator.RESTART);//
 valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
  @Override
  public void onAnimationUpdate(ValueAnimator valueAnimator) {
   float value = (float) valueAnimator.getAnimatedValue();
   startAngle = 360 * value;
   invalidate();
  }
 });
 valueAnimator.addListener(new AnimatorListenerAdapter() {
  @Override
  public void onAnimationEnd(Animator animation) {
   super.onAnimationEnd(animation);
  }
 });
 if (!valueAnimator.isRunning()) {
  valueAnimator.start();
 }
 return valueAnimator;
}
}

 Dialog 代码:


public class LoadingDialog {
LVCircularRing mLoadingView;
Dialog mLoadingDialog;
public LoadingDialog(Context context,String msg) {
 // 首先得到整个View
 View view = LayoutInflater.from(context).inflate(
   R.layout.loading_dialog_view, null);
 // 获取整个布局
 LinearLayout layout = (LinearLayout) view.findViewById(R.id.dialog_view);
 // 页面中的LoadingView
 mLoadingView = (LVCircularRing) view.findViewById(R.id.lv_circularring);
 // 页面中显示文本
 TextView loadingText = (TextView) view.findViewById(R.id.loading_text);
 // 显示文本
 loadingText.setText(msg);
 // 创建自定义样式的Dialog
 mLoadingDialog = new Dialog(context, R.style.loading_dialog);
 // 设置返回键无效
 mLoadingDialog.setCancelable(false);
 mLoadingDialog.setContentView(layout, new LinearLayout.LayoutParams(
   LinearLayout.LayoutParams.MATCH_PARENT,
   LinearLayout.LayoutParams.MATCH_PARENT));
}
public void show(){
 mLoadingDialog.show();
 mLoadingView.startAnim();
}
public void close(){
 if (mLoadingDialog!=null) {
  mLoadingView.stopAnim();
  mLoadingDialog.dismiss();
  mLoadingDialog=null;
 }
}
}

 布局文件loading_dialog_view 代码:


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:Android="Http://schemas.android.com/apk/res/android"
android:id="@+id/dialog_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:background="@drawable/dialog_bg"
android:padding="20dp"
android:orientation="vertical">
<com.ye.daqiapp.ui.widget.loading.LVCircularRing
 android:id="@+id/lv_circularring"
 android:layout_width="50dp"
 android:layout_height="50dp"/>
<TextView
 android:id="@+id/loading_text"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:textColor="#ffffff"
 android:layout_marginTop="5dp"
 android:textSize="15sp"/>
</LinearLayout>

 Dialog中Style代码:


<style name="loading_dialog" parent="android:style/Theme.Dialog">
 <item name="android:windowFrame">@null</item>
 <item name="android:windowNoTitle">true</item>
 <item name="android:windowBackground">@android:color/transparent</item>
 <item name="android:windowIsFloating">true</item>
 <item name="android:backgroundDimEnabled">false</item>
 <item name="android:windowContentOverlay">@null</item>
</style>

 背景dialog_bg 代码:


<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 内部颜色 -->
<solid android:color="#444444" />
<!-- 圆角的幅度 -->
<corners
 android:bottomLeftRadius="3Dp"
 android:bottomRightRadius="3dp"
 android:topLeftRadius="3dp"
 android:topRightRadius="3dp" />
</shape>

 如何使用:在需要使用的地方初始化Dialog:


LoadingDialog dialog=new LoadingDialog(context,"玩命加载中...");
//显示Dialog
dialog.show();
//关闭Dialog
dialog.close();

以上是对Android Dialog 重写的小示例,有需要的朋友可以参考下。

您可能感兴趣的文章:Android编程自定义Dialog的方法分析Android自定义dialog可选择展示年月日时间选择栏Android中用Builder模式自定义Dialog的方法Android自定义Dialog实现文字动态加载效果Android UI设计系列之自定义Dialog实现各种风格的对话框效果(7)Android中制作自定义dialog对话框的实例分享Android自定义dialog简单实现方法Android编程经典代码集锦(复制,粘贴,浏览器调用,Toast显示,自定义Dialog等)Android编程中自定义dialog用法实例Android 去掉自定义dialog的白色边框的简单方法Android 自定义dialog的实现代码


--结束END--

本文标题: Android 自定义Dialog 实例

本文链接: https://www.lsjlt.com/news/24675.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android 自定义Dialog 实例
    开发中经常需要请求网络获取数据,我们在请求网络到得到数据时当中需要等待一些时间,为了增加用户体验,我们一般会用一个Dialog来提示用户我们在加载网络数据。 今天我们来实现如下...
    99+
    2022-06-06
    自定义dialog dialog Android
  • android dialog自定义实例详解
    本人工作有一个月多了。对于android很多东西,都有了新的了解或者说真正的掌握。为了让更多的像我这样的小白少走弯路,所以我会坚持将我在工作中遇到的一些比较令我印象深刻的知识点...
    99+
    2022-06-06
    dialog Android
  • Android自定义Dialog的方法实例
    因为公司需要不同样式的dialog,既有取消和确认键 又需要只有确认键的 并且系统自带dialog样式太丑 所以就自己做了个 接下来看代码: public class M...
    99+
    2022-06-08
    方法 dialog Android
  • Android编程中自定义dialog用法实例
    本文实例讲述了Android编程中自定义dialog用法。分享给大家供大家参考,具体如下: dialog是android中提供的一组弹出提示框,非常好用,可是它的样式是一个定式...
    99+
    2022-06-06
    自定义dialog dialog Android
  • Android自定义个性化的Dialog示例
    本文实例讲述了Android自定义个性化的Dialog。分享给大家供大家参考,具体如下: Dialog: mDialog = new Dialog(this, R.style...
    99+
    2022-06-06
    dialog Android
  • Android如何自定义Dialog
    本篇内容主要讲解“Android如何自定义Dialog”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android如何自定义Dialog”吧!接下来看代码:public class&n...
    99+
    2023-07-02
  • Android中自定义对话框(Dialog)的实例代码
    1.修改系统默认的Dialog样式(风格、主题)2.自定义Dialog布局文件3.可以自己封装一个类,继承自Dialog或者直接使用Dialog类来实现,为了方便以后重复使用,...
    99+
    2022-06-06
    自定义 dialog Android
  • Android 自定义dialog的实现代码
    Android 自定义dialog的实现代码 搜索相关关键字网上一大堆实现,但是看完总觉得缺胳膊少腿,绕了不少弯路,终于弄好了自定义dialog。把自己整合的完整代码发上来。 ...
    99+
    2022-06-06
    自定义dialog dialog Android
  • Android自定义对话框Dialog
    本文简单介绍自定义对话框Dialog的使用,代码和结构都非常简单,目的是能够快速使用自定义对话框,在本文中不具体讲解对话框的高级使用。 实现步骤 首先需要自己在我们的.xml文...
    99+
    2022-06-06
    dialog Android
  • Android自定义Dialog框样式
    本文实例为大家分享了Android自定义Dialog框样式的具体代码,供大家参考,具体内容如下 首先定义dialog的布局文件,buy_goods_dialog.xml如下: &...
    99+
    2022-11-12
  • Android自定义dialog简单实现方法
    本文实例讲述了Android自定义dialog简单实现方法。分享给大家供大家参考,具体如下: @Override protected void onCreate(Bundl...
    99+
    2022-06-06
    方法 dialog Android
  • Android自定义弹框Dialog效果
    本文实例为大家分享了Android自定义弹框Dialog效果的具体代码,供大家参考,具体内容如下 1.dialog_delete.xml <xml version=...
    99+
    2022-11-13
  • Android 自定义View 之 Dialog弹窗
    Dialog弹窗 前言正文一、弹窗视图帮助类二、弹窗控制类三、监听接口四、样式五、简易弹窗六、常规使用七、简易使用八、源码 前言   在日常开发中用到弹窗是比较多的,常用于提示作用,比如错误操作提示,余额不足提示,退出登录提...
    99+
    2023-08-18
    自定义Dialog 简易提示弹窗 EasyDialog
  • 如何在Android中自定义Dialog
    本篇文章为大家展示了如何在Android中自定义Dialog,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。功能:android 提供给我们的只有2种Dialog 即 AlertDialog &...
    99+
    2023-05-31
    android roi dialog
  • Android中制作自定义dialog对话框的实例分享
    自定义dialog基础版 很多时候,我们在使用android sdk提供的alerdialog的时候,会因为你的系统的不同而产生不同的效果,就好比如你刷的是MIUI的系统,弹出...
    99+
    2022-06-06
    自定义dialog dialog Android
  • Android如何实现自定义Dialog的大小
    小编给大家分享一下Android如何实现自定义Dialog的大小,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体如下:Android应用开发中,无论是出于功能还...
    99+
    2023-05-30
    android dialog
  • Android自定义弹出框dialog效果
    项目要用到弹出框,还要和苹果的样式一样(Android真是没地位),所以就自己定义了一个,不是很像(主要是没图),但是也还可以。废话不多说了,直接上代码先看布局文件<?xml version="1.0" encoding="u...
    99+
    2023-05-31
    android 弹出框 dialog
  • Android实现自定义圆角对话框Dialog的示例代码
    前言: 项目中多处用到对话框,用系统对话框太难看,就自己写一个自定义对话框。   对话框包括:1、圆角       2、app图标 , 提示文本,关闭对话框的"确定"...
    99+
    2022-06-06
    自定义 示例 dialog Android
  • Android自定义对话框Dialog的简单实现
    本文着重研究了自定义对话框,通过一下步骤即可清晰的理解原理,通过更改界面设置和style类型,可以应用在各种各样适合自己的App中。首先来看一下效果图:首先是activity的界面点击了上述图片的按钮后,弹出对话框:点击对话框的确定按钮:点...
    99+
    2023-05-30
    android 对话框 dialog
  • android自定义dialog的方法是什么
    Android中自定义Dialog的方法有以下几种:1. 创建一个继承自Dialog类的自定义对话框:- 创建一个新的类,继承自Di...
    99+
    2023-09-21
    android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作