Android开发之自定义圆角矩形进度对话框

方式一:自定义对话框

public class ProgersssDialog extends Dialog {

    private ImageView img;
    private TextView txt;
        
    public ProgersssDialog(Context context) {
            super(context, R.style.progress_dialog);
           
            //加载布局文件
        
          View view=  View.inflate(context, R.layout.progress_dialog, null);
            img=(ImageView) view.findViewById(R.id.progress_dialog_img);
            txt=(TextView) view.findViewById(R.id.progress_dialog_txt);
            //给图片添加动态效果
           Animation anim=AnimationUtils.loadAnimation(context, R.anim.loading_dialog_progressbar);
            img.setAnimation(anim);
            txt.setText("数据正在处理,请稍后...");
            getWindow().setBackgroundDrawableResource(R.drawable.round_retangle);  
            //dialog添加视图
           setContentView(view);
           this.setCancelable(false);
          
          
    }
    
    /**
     * 对话框设置内容
     * @param msg
     */
    public void setMsg(String msg){
            txt.setText(msg);
    }
    /**
     * 设置对话框背景
     * @param msgId
     */
    public void setMsg(int msgId){
            txt.setText(msgId);
    }
    /**
     * 显示对话框
     */
    public void showProgersssDialog(){
    	 this.show();
}
    /**
     * 关闭对话框
     */
    public void closeProgersssDialog(){
    	this.dismiss();
}

}

对应的xml布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="180dp"
    android:layout_height="90dp"
  android:background="@android:color/transparent"
  android:orientation="vertical"
    android:layout_gravity="center"
    >

    <ImageView
        android:id="@+id/progress_dialog_img"
        android:layout_width="45dp"
        android:layout_height="45dp"
        android:layout_marginTop="3dp"
        android:layout_gravity="center"
        android:src="@drawable/loading" />

    <TextView
        android:id="@+id/progress_dialog_txt"
        android:layout_width="135dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="3dp"
         android:layout_gravity="center"
        android:text="数据正在处理,请稍后..."
        android:textColor="#000"
        android:textSize="12sp" />

</LinearLayout>

对应的样式:

   <style name="progress_dialog" parent="@android:style/Theme.Dialog">
	      <item name="android:windowFrame">@null</item> <!--Dialog的windowFrame框为无 --> 
	      <item name="android:windowIsFloating">true</item><!-- 是否漂现在activity上 -->
	      <item name="android:windowIsTranslucent">false</item><!-- 是否半透明 -->
	      <item name="android:windowNoTitle">true</item>
	      <item name="android:backgroundDimEnabled">false</item>
	     <!--  <item name="android:windowBackground">@drawable/loading_bg</item> -->
	      <item name="android:windowBackground">@android:color/black</item>
    </style>




方式二:利用activity实现

1、直接利用一个activty布局,并在另外一个activity中操作该activity实例。在一个非activity实例中启动一个activity,必须要加上intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

public class LoadingActivity extends Activity{
	public static LoadingActivity mInstance=null;
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);	
		setContentView(R.layout.loading);
		mInstance=this;
			
	
   }
}

对应的圆角矩形布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >  

    <RelativeLayout
        android:layout_width="180dp"
        android:layout_height="90dp"
        android:layout_centerInParent="true"
        android:background="@drawable/loading_bg" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:orientation="vertical" >
            
            <ProgressBar
        		android:id="@+id/progressBar1"
        		style="?android:attr/progressBarStyleLarge"
        		android:layout_width="55dp"
        		android:layout_height="45dp"        
        		android:layout_gravity="center_horizontal"
        		
         	/>
      
        	<TextView
        		android:layout_width="wrap_content"
        		android:layout_height="wrap_content"
        		android:text="数据加载中,请稍后..."
       			android:layout_marginTop="5dp"
        		android:textColor="#fff"
        		android:textSize="12sp"
        />
        </LinearLayout>

    </RelativeLayout>

</RelativeLayout>

效果如下:


对应的样式:

 <style name="MyDialogStyle">
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowFrame">@null</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
        <item name="android:backgroundDimEnabled">true</item>
    </style>

并在清单文件中配置如下:

  <activity android:name="r.LoadingActivity" android:theme="@style/MyDialogStyle" />             


2、利用activity实现的另外一种布局:一个对话框主题的activity加上该布局即可:

布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/round_retangle"
    android:orientation="vertical" >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="提示"
        android:textSize="18sp"
       
         />
     <TextView
         
         android:layout_marginTop="25dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="开启或关闭游客终端蓝牙设备?"
        android:textSize="15sp" />
  
        <Button
            android:id="@+id/btn_on"
             android:layout_marginTop="15dp"
            android:layout_marginLeft="25dp"
            android:layout_marginRight="25dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="开启"
             android:background="@drawable/btn_style_green"
            android:textSize="13sp" />

        <Button
            android:id="@+id/btn_off"
            android:layout_marginTop="10dp"
            android:layout_marginLeft="25dp"
            android:layout_marginRight="25dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="关闭"
             android:background="@drawable/btn_style_white"
            android:textSize="13sp" />
        
         <Button
            android:id="@+id/btn_quit"
            android:layout_marginTop="10dp"
            android:layout_marginLeft="25dp"
            android:layout_marginRight="25dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="退出"
             android:background="@drawable/btn_style_white"
            android:textSize="13sp" />
   
</LinearLayout>

效果:


drawable目录对应的文件:

<?xml version="1.0" encoding="utf-8"?>  
<shape xmlns:android="http://schemas.android.com/apk/res/android"  
    android:shape="rectangle" >  
  
    <corners  
        android:bottomLeftRadius="8dp"  
        android:bottomRightRadius="8dp"  
        android:topLeftRadius="8dp"  
        android:topRightRadius="8dp" />  
     <!-- 填充的颜色 -->
    <solid android:color="#FFFFFF" />
  
    <padding  
        android:bottom="7dp"  
        android:left="7dp"  
        android:right="7dp"  
        android:top="7dp" />  
  
</shape>  

资源下载地址:http://download.csdn.net/detail/u014600432/8362247







你可能感兴趣的:(android,圆角矩形对话框)