Android自定义类似ProgressDialog效果的Dialog

Android自定义类似ProgressDialog效果的Dialog.

方法如下:

1.首先准备两张自己要定义成哪样子的效果的图片和背景图片(也可以不要背景)。

如我要的效果:

2.定义loading_dialog.xml布局文件(这里你也可以按自己的布局效果定义,关键是要有个imageView):

[html] view plaincopy

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:id="@+id/dialog_view"
  4. android:orientation="vertical"
  5. android:layout_width="fill_parent"
  6. android:layout_height="fill_parent"
  7. android:minHeight="60dp"
  8. android:minWidth="180dp"
  9. android:gravity="center"
  10. android:padding="10dp"
  11. android:background="@drawable/loading_bg">
  12. <ImageView
  13. android:id="@+id/img"
  14. android:layout_width="wrap_content"
  15. android:layout_height="wrap_content"
  16. android:src="@drawable/publicloading"
  17. />
  18. <TextView
  19. android:id="@+id/tipTextView"
  20. android:layout_width="wrap_content"
  21. android:layout_height="wrap_content"
  22. android:layout_marginLeft="10dp"
  23. android:text="数据加载中……" />
  24. </LinearLayout>

3.定义一个loadingDialog中imageView转动的动画:loading_animation.xml

[html] view plaincopy

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <set android:shareInterpolator="false" xmlns:android="http://schemas.android.com/apk/res/android">
  3. <rotate
  4. android:interpolator="@android:anim/linear_interpolator"
  5. android:pivotX="50%"
  6. android:pivotY="50%"
  7. android:fromDegrees="0"
  8. android:toDegrees="+360"
  9. android:duration="1500"
  10. android:startOffset="-1"
  11. android:repeatMode="restart"
  12. android:repeatCount="-1"/>
  13. </set>

4.定义dialog的style.

<!-- 自定义loading dialog -->
    <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">@drawable/loading_bg</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowContentOverlay">@null</item>
    </style>  

[java] view plaincopy

5.写点创建Dialog的代码,你可以自己封装成一个方法。

/**
     * 得到自定义的progressDialog
     * @param context
     * @param msg
     * @return
     */
    public static Dialog createLoadingDialog(Context context, String msg) {  

        LayoutInflater inflater = LayoutInflater.from(context);
        View v = inflater.inflate(R.layout.loading_dialog, null);// 得到加载view
        LinearLayout layout = (LinearLayout) v.findViewById(R.id.dialog_view);// 加载布局
        // main.xml中的ImageView
        ImageView spaceshipImage = (ImageView) v.findViewById(R.id.img);
        TextView tipTextView = (TextView) v.findViewById(R.id.tipTextView);// 提示文字
        // 加载动画
        Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(
                context, R.anim.load_animation);
        // 使用ImageView显示动画
        spaceshipImage.startAnimation(hyperspaceJumpAnimation);
        tipTextView.setText(msg);// 设置加载信息  

        Dialog loadingDialog = new Dialog(context, R.style.loading_dialog);// 创建自定义样式dialog  

        loadingDialog.setCancelable(false);// 不可以用“返回键”取消
        loadingDialog.setContentView(layout, new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.FILL_PARENT,
                LinearLayout.LayoutParams.FILL_PARENT));// 设置布局
        return loadingDialog;  

    }  

最后来张整体的效果图:

-------------------------------------------------------------------------------------------------------------------------------------

上一篇写了使用系统ProgressBar实现的稍微好看的ProgressDialog,如果你想自己的ProgressDialog更具有自己的风格,那用图片去实现,将会达到你的目的。

话不多说,先看效果:

看了上篇以后,实现这个也是很简单的,只需要把布局文件的ProgressBar换成ImageView就可以了。

换成ImageView以后,我们需要让这个ImageView动起来,这就需要对它进行一个anim处理。

实现思路是:用一个动画代替ImageView的图片资源,然后让动画动起来就OK了。

将这个资源当作ImageView的背景图片

<?xml version="1.0" encoding="utf-8"?>
<animation-list
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">
    <item android:drawable="@drawable/icon_loading1" android:duration="100"/>
    <item android:drawable="@drawable/icon_loading2" android:duration="100"/>
    <item android:drawable="@drawable/icon_loading3" android:duration="100"/>
    <item android:drawable="@drawable/icon_loading4" android:duration="100"/>
    <item android:drawable="@drawable/icon_loading5" android:duration="100"/>
    <item android:drawable="@drawable/icon_loading6" android:duration="100"/>
    <item android:drawable="@drawable/icon_loading7" android:duration="100"/>
    <item android:drawable="@drawable/icon_loading8" android:duration="100"/>
</animation-list>  

然后就要在MyProgressDialog类里面让动画启动了

ImageView imageView = (ImageView) progressDialog.findViewById(R.id.loadImg);
        AnimationDrawable animationDrawable = (AnimationDrawable) imageView.getBackground();
        animationDrawable.start();  

完成这些,然后就可以在Activity里面调用我们的MyProgressDialog了。

为了方便,给大家附上我的图片资源,希望能用得上

Android自定义类似ProgressDialog效果的Dialog,布布扣,bubuko.com

时间: 2024-10-11 13:01:00

Android自定义类似ProgressDialog效果的Dialog的相关文章

Android 自定义PopupWindow动画效果

public class RollActivity extends Activity { private View view; private Button btn; private PopupWindow mPopupWindow; private View[] btns; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { s

Android 自定义ProgressDialog示例实现

闲来无事,总结了两个自定义的ProgressDialog,大家可以参考下,根据自己需要进行选择修改: 实现效果: 示例1: 示例2: 代码如下: MainActivity:只是两个Button点击事件 package com.customwaitdialog; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import

Android 自定义 HorizontalScrollView 打造再多图片(控件)也不怕 OOM 的横向滑动效果

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38140505 自从Gallery被谷歌废弃以后,Google推荐使用ViewPager和HorizontalScrollView来实现Gallery的效果.的确HorizontalScrollView可以实现Gallery的效果,但是HorizontalScrollView存在一个很大的问题,如果你仅是用来展示少量的图片,应该是没问题的,但是如果我希望HorizontalScr

Android自定义dialog中的EditText无法弹出键盘的解决

最近我独立开发的项目<全医会>已经在内测当中了,很快将会上架到各大应用市场.之前开发的几个项目都因为一些原因没有上架还是比较遗憾的.所以,最近我心情格外的好. 今天在做一个新项目,专为律师和客户开发的APP,其中有一个自定义对话框的需求.这个知识点其实很简单,就是下图这个效果: 可是当我悠闲的写完以后才发现,自定义对话框里面嵌套的EditText根本无法获取焦点,无法弹出软键盘,郁闷,以前开发的软件里面没有EditText的时候一切正常,没有发现这个隐藏的坑.下图是我之前写的一个自定义对话框:

Android UI之自定义——类似iOS的Tabbar

Android UI之自定义--类似iOS的Tabbar Tabbar最早出现在iOS,iOS中的TabBarController实现了这个功能,开发起来相当简单.现在的APP,大多数都会使用Tabbar来作为应用的功能导航,界面简单清晰.那么Android常见的实现是通过RadioGroup来实现,今天将带来自定义实现,补充RadioGroup实现的不足. 先看看常见的软件中的使用: 这个是高铁管家APP,大家应该非常熟悉.这个APP的首页底部就是一个类似iOS的Tabbar.这里就不多举例子

Android自定义View(1):对话框-Dialog

Android系统自带的对话框,在很多android 5.0以下系统的手机上,简直目不忍视,所以UI设计基本上都需要自定义对话框,漂亮的对话框五花八门,android如何设计一种简单的自定义对话框呢. 一,Dialog需要注意的问题 android 弹出dialog必须存在所属的activity,不能凭空产生,所以dialog不能在application类里面new,必须在activity onCreate之后new. 1,默认的dialog public Dialog(Context cont

Android 自定义RecyclerView 实现真正的Gallery效果

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38173061 ,本文出自:[张鸿洋的博客] 上一篇博客我使用自定义HorizontalScrollView写了一个具有HorizontalScrollView效果和ViewPager特性的横向图片轮播,详见:Android 自定义 HorizontalScrollView 打造再多图片(控件)也不怕 OOM 的横向滑动效果.其实制作横向滚动的不得不说另一个控件,就是Google

Android 自定义 ViewPager 打造千变万化的图片切换效果

Android 自定义 ViewPager 打造千变万化的图片切换效果 标签: Android自定义ViewPagerJazzyViewPager 目录(?)[+] 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38026503 记 得第一次见到ViewPager这个控件,瞬间爱不释手,做东西的主界面通通ViewPager,以及图片切换也抛弃了ImageSwitch之类的,开 始让ViewPager来做.时间长了,ViewPa

问题解决之Android自定义Dialog无法dismiss

场景: 点击ListView的一个Item,弹出自定义Dialog.在初始化Dialog时,将一个OnClickListener作为参数传递给Dialog.点击布局中设置的Button可以dismiss. 问题: Dialog布局中的两个Button设置了监听但事件没有触发到. 分析: 1.Button确实添加了OnClickListener事件,但没有被触发,有可能是点击的Button和注册监听的Button不是同一个对象,所以点击没有dismiss. 给出自定义Dialog代码和界面调用的代