创建一个自定义的进度条---Dialog

Android SDK虽然已经提供有进度条组件,但用的时候我们会发现可能风格与我们应用的整体风格不太搭配,而且ProgressDialog的可定制行也不太强,这时就需要我们自定义实现一个ProgressDialog。

  1. 总体思路:在一个Dialog中放置一个图片,让这个图片按自已指定的速度旋转,达到显示进度的效果。
  2. 实现代码部分
 /**
     * @param context
     * @param msg
     * @return
     */
    public static Dialog createLoadingDialog(Context context, String msg) {

        LayoutInflater inflater = LayoutInflater.from(context);
        View v = inflater.inflate(R.layout.custom_dialog_progress_trans_layout, null);
        LinearLayout layout = (LinearLayout) v.findViewById(R.id.dialog_view);
        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);
        spaceshipImage.startAnimation(hyperspaceJumpAnimation);
        tipTextView.setText(msg);

        Dialog loadingDialog = new Dialog(context, R.style.loading_dialog);

        loadingDialog.setCancelable(false);
        loadingDialog.setContentView(layout, new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.MATCH_PARENT,
                LinearLayout.LayoutParams.MATCH_PARENT));
        return loadingDialog;

    }

  1. 样式部分
    1) 旋转速度 ( res\anmi\load_animation.xml )


    

2) 总体布局 (res\layout\cutstom_dialog_progress_trans_layout )



 
    
 
    

3)进度条对话框样式( res\style\styles.xml )



4)调用

//设置进度条
    Dialog    progressDialog = DialogUIUtils.showLoadingDialog(MainActivity.this,"正在查询中,请耐心等待......");
        progressDialog.show();

        //点击物理返回键是否可取消dialog
        progressDialog.setCancelable(true);
        //点击dialog之外 是否可取消
        progressDialog.setCanceledOnTouchOutside(false);

源码地址:https://github.com/AilsaLT/DialogTest

你可能感兴趣的:(Android篇)