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

时间: 2024-09-29 19:46:50

Android开发之自定义圆角矩形进度对话框的相关文章

Android开发之自定义圆角矩形图片ImageView的实现

android中的ImageView只能显示矩形的图片,这样一来不能满足我们其他的需求,比如要显示圆角矩形的图片,这个时候,我们就需要自定义ImageView了,其原理就是首先获取到图片的Bitmap,然后进行裁剪对应的圆角矩形的bitmap,然后在onDraw()进行绘制圆角矩形图片输出. 效果图如下: 自定义的圆形的ImageView类的实现代码如下: package com.xc.xcskin.view; import android.content.Context; import and

Android自定义圆角矩形进度条2

效果图: 或 方法讲解: (1)invalidate()方法 invalidate()是用来刷新View的,必须是在UI线程中进行工作.比如在修改某个view的显示时, 调用invalidate()才能看到重新绘制的界面.invalidate()的调用是把之前的旧的view从主UI线程队列中pop掉.一般在自定义控件中会用到这个方法. (2)RectF方法的应用 RectF是用来绘画矩形的方法. RectF(left,top,right,bottom),四个参数的含义分别是父控件距离矩形左上右下

android圆角矩形进度条

最近做项目,有个一个需求,就是圆角进度条.效果图如下. 当时项目时间很紧,没多去想怎么实现最佳,就直接把美工给的圆角进度条裁剪成了四份.来做 Canvas 剪切绘制.这样虽然也能达到效果,但是服用性很差.最近网上搜索了很长时间,发现Paint画笔,有遮挡层的功能.android.graphics.Paint.setXfermode(Xfermode xfermode) .其中一个参数就是 Mode.DST_OUT 显示底图与上层图非交集的底图图像.于是就有个思路,先绘制圆角矩形进度条,然后设置画

Android开发之自定义Dialog二次打开报错问题解决

之前自定义了一个AlertDialog对话框,第一次点击时正常,但第二次调用时会出现错误:java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 关于这个错误纠结了我好久,在网上百度了也不少,但感觉解决效果都达不到自己想要的效果.网上的解释说是一个子视图指定了多个父视图.由此可以推断出,在第二

Android开发之自定义圆形的ImageView的实现

android中的ImageView只能显示矩形的图片,这样一来不能满足我们其他的需求,比如要显示圆形的图片,这个时候,我们就需要自定义ImageView了,其原理就是首先获取到图片的Bitmap,然后进行裁剪圆形的bitmap,然后在onDraw()进行绘制圆形图片输出. 效果图如下: 自定义的圆形的ImageView类的实现代码如下: package com.xc.xcskin.view; import android.content.Context; import android.grap

Android开发之自定义View-可动画展开收缩View的实现

有时候需要点击一个view可以动画展开和收缩折叠一个View这样的效果,这样就可以直接自定义View来实现. 本例中,采用继承FrameLayout来实现自定义的ExpandView.下面将详细介绍各个部分来实现该类以及如何使用该自定义视图. 效果图如下: 未展开效果: 正在向上折叠收缩中的效果: 已经展开效果: 自定义展开类:ExpandView的实现: package com.czm.customview; import android.content.Context; import and

Android开发之自定义TabHost文字及背景(源代码分享)

使用TabHost 可以在一个屏幕间进行不同版面的切换,而系统自带的tabhost界面较为朴素,我们应该如何进行自定义修改优化呢 MainActivity的源代码 package com.dream.ledong; import android.app.TabActivity; import android.content.Intent; import android.graphics.Color; import android.os.Bundle; import android.view.Gr

Android开发:自定义GridView/ListView数据源

http://mobile.51cto.com/android-259861.htm 在开发中,我们常常会遇到比较复杂的GridView/ListView的布局,重新实现BaseAdapter不但能帮助我们实现我们想要的布局效果,并且在绑定大数据量时也不会感觉有卡壳现象.记得以前用一个ListView直接去绑定手机内的联系人Cursor(一百多号人),滑动的时候就会有卡的感觉.今天决定写个Demo是因为在项目中可能会要实现这样的一个效果:一个GridView中绑定4个ImageButton,有些

Android开发之自定义HorizontalScrollView视图实现仿ViewPager效果

开发过程中,需要达到 HorizontalScrollView和ViewPager的效果,于是直接重写了HorizontalScrollView来达到实现ViewPager的效果. 实际效果图如下: (1)自定义HorizontalScrollView类:AppHorizontalScrollView实现: package com.czm.ui.view; import java.util.ArrayList; import android.content.Context; import and