自定义进度条对话框

Android系统自带的进度条很丑不能满足我们在真实项目中的实际需求,以下是一个自定义对话框动画的简单演示,难点在于动画所配的图片太难找了,如果有朋友想要完整源码和图片资源的可以去我的资源页下载:
http://download.csdn.net/detail/sunshine_mood/9421936

1)、Activity:

public class MainActivity extends Activity {
    private static final String TAG = MainActivity.class.getSimpleName();//获取类名
    private CustomProgressDialog customProgressDialog;//自定义对话框类

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.activity_main);
        //MyApplication.getInstance().addActivity(MainActivity.this);//将Activity加入到list队列

    }
    //开始显示
    public void button(View v){
        customProgressDialog = new CustomProgressDialog(this, "正在加载中",
                R.anim.frame2);
        customProgressDialog.show();
    }

    @Override
    protected void onStop() {
        super.onStop();
        //停止显示
        if (customProgressDialog != null
                && customProgressDialog.isShowing())
            customProgressDialog.dismiss();
    }
}

2)、对话框类CustomProgressDialog:

/**
 * 自定义对话框类
 * 难点:动画,图片
 * @author 阳光心态
 *
 */
public class CustomProgressDialog extends ProgressDialog {

    private AnimationDrawable mAnimation;
    private Context mContext;
    private ImageView mImageView;
    private String mLoadingTip;
    private TextView mLoadingTv;
    private int count = 0;
    private String oldLoadingTip;
    private int mResid;

    public CustomProgressDialog(Context context, String content, int id) {
        super(context);
        this.mContext = context;
        this.mLoadingTip = content;
        this.mResid = id;
        setCanceledOnTouchOutside(true);//点击对话框外部可取消对话框显示
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        initView();
        initData();
    }

    private void initData() {

        mImageView.setBackgroundResource(mResid);
        // 通过ImageView对象拿到背景显示的AnimationDrawable
        mAnimation = (AnimationDrawable) mImageView.getBackground();
        // 为了防止在onCreate方法中只显示第一帧的解决方案之一
        mImageView.post(new Runnable() {
            @Override
            public void run() {
                mAnimation.start();
            }
        });
        mLoadingTv.setText(mLoadingTip+"...");
    }

    public void setContent(String str) {
        mLoadingTv.setText(str);
    }

    private void initView() {
        setContentView(R.layout.progress_dialog);
        mLoadingTv = (TextView) findViewById(R.id.loadingTv);//显示图片
        mImageView = (ImageView) findViewById(R.id.loadingIv);//显示文字
    }

    //Activity渲染完后会调用此方法
    /*@Override
    public void onWindowFocusChanged(boolean hasFocus) {
        // TODO Auto-generated method stub
        mAnimation.start(); 
        super.onWindowFocusChanged(hasFocus);
    }*/
}

3)、动画资源frame2.xml:

<?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/sprites_01"
        android:duration="150"/>
       <item
        android:drawable="@drawable/sprites_02"
        android:duration="150"/>
          <item
        android:drawable="@drawable/sprites_03"
        android:duration="150"/>
             <item
        android:drawable="@drawable/sprites_04"
        android:duration="150"/>
                <item
        android:drawable="@drawable/sprites_05"
        android:duration="150"/>
                   <item
        android:drawable="@drawable/sprites_06"
        android:duration="150"/>
                      <item
        android:drawable="@drawable/sprites_07"
        android:duration="150"/>
                         <item
        android:drawable="@drawable/sprites_08"
        android:duration="150"/>
                            <item
        android:drawable="@drawable/sprites_09"
        android:duration="150"/>
                               <item
        android:drawable="@drawable/sprites_10"
        android:duration="150"/>
                                  <item
        android:drawable="@drawable/sprites_11"
        android:duration="150"/>
                                     <item
        android:drawable="@drawable/sprites_12"
        android:duration="150"/>
</animation-list>

3)、源码地址:
http://download.csdn.net/detail/sunshine_mood/9421936

4)、效果图:
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值