zoukankan      html  css  js  c++  java
  • Android自定义ProgressDialog样式 分类: Android 2015-07-03 16:17 12人阅读 评论(0) 收藏

    Android系统自带的ProgressDialog样式的确不太好看,我们可以自己定义它的样式,下面看看实现

    1.style.xml  progressDialog继承与Dialog,先设置一下progressDialog的风格,设置背景图片。

    <style name="CustomDialog" parent="@android:style/Theme.Dialog">  
            <item name="android:windowFrame">@null</item>  
            <item name="android:windowIsFloating">true</item>  
            <item name="android:windowContentOverlay">@null</item>  
            <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>  
            <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>  
        </style>  
      
        <style name="CustomProgressDialog" parent="@style/CustomDialog">  
            <item name="android:windowBackground">@drawable/toast_frame</item>  
            <item name="android:windowNoTitle">true</item>  
        </style>  
    2.customprogressdialog.xml文件,定义自己的布局,由于我的需求只需要一个进度条以及一串显示的内容,所以布局比较简单。

    <pre name="code" class="html"><?xml version="1.0" encoding="utf-8"?>  
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
        android:layout_width="fill_parent"  
        android:layout_height="fill_parent"  
        android:orientation="horizontal"  
        android:padding="8dp" >  
      
        <ProgressBar  
            android:id="@+id/loadingImageView"  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:layout_marginRight="15dp"  
            android:indeterminateDrawable="@drawable/progress_medium" />  
      
        <TextView  
            android:id="@+id/id_tv_loadingmsg"  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:layout_gravity="center_vertical"  
            android:textColor="@android:color/white"  
            android:textSize="18dp" />  
      
    </LinearLayout>  

    
    3.progress_medium.xml文件.旋转效果。
    

    <?xml version="1.0" encoding="utf-8"?>  
    <animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"  
        android:drawable="@drawable/spinner_black_32"  
        android:fromDegrees="0"  
        android:pivotX="50.0%"  
        android:pivotY="50.0%"  
        android:toDegrees="360" /> 

    4.CustomProgressDialog.java文件,这个是就是我们最终需要使用的progressDialog了。

    package com.xxx.view;  
      
    import com.xxx.activity.R;  
      
    import android.app.Dialog;  
    import android.content.Context;  
    import android.view.Gravity;  
    import android.widget.TextView;  
      
    public class CustomProgressDialog extends Dialog {  
        public CustomProgressDialog(Context context, String strMessage) {  
            this(context, R.style.CustomProgressDialog, strMessage);  
        }  
      
        public CustomProgressDialog(Context context, int theme, String strMessage) {  
            super(context, theme);  
            this.setContentView(R.layout.customprogressdialog);  
            this.getWindow().getAttributes().gravity = Gravity.CENTER;  
            TextView tvMsg = (TextView) this.findViewById(R.id.id_tv_loadingmsg);  
            if (tvMsg != null) {  
                tvMsg.setText(strMessage);  
            }  
        }  
      
        @Override  
        public void onWindowFocusChanged(boolean hasFocus) {  
      
            if (!hasFocus) {  
                dismiss();  
            }  
        }  
    }  
    修改的部分也就主要是这里,之前作者用静态方法去构造ProgressDialog,context无法释放,下面是修改后的代码。
    在Activity里面构造showProgressDialog:我写在自己的父类里。

    public void showProgress(int resID, boolean canBack) {  
            if (progressDialog != null) {  
                progressDialog.cancel();  
            }  
            progressDialog = new CustomProgressDialog(activity, getResources()  
                    .getString(resID));  
            progressDialog.show();  
        }  

    子类继承调下这个方法就show出来了。

    另附圆角对话框源码:

    http://download.csdn.net/detail/u010963246/8869141

  • 相关阅读:
    查找算法:二分查找法(折半查找)
    钞票找零-贪心,动态规划算法
    PHP7与php5
    网站高并发解决方案(理论知识) 二
    loj#6566. 月之都的密码
    我的 Linux 配置
    CTSC2011 幸福路径
    WC2018 即时战略
    uoj#460 新年的拯救计划
    bzoj 5016 一个简单的询问
  • 原文地址:https://www.cnblogs.com/xieping/p/4666305.html
Copyright © 2011-2022 走看看