方式一:自定义对话框
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 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" />
布局:
<?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>