Android对话框之对话框风格的窗体

来源:互联网 发布:java程序员的晋升之路 编辑:程序博客网 时间:2024/05/21 10:34

以前学过了对话框,但是不知道做什么用,怎么用才合适。最近做东西的时候发现,这一块的学问还挺大的。想想,如果让我们开发桌面Widget应用的时候,需要用到对话框的风格该怎么办?常规的在Activity里创建对话框的方式肯定是不行的了,此时我们应该想到对话框风格的窗体,就是这篇文章我要讲的。

 

这种对话框本质上仍是一个窗体,只是把显示的窗口的Activity的风格换成了对话框的风格即可。

下面用一个提示用户是否升级的对话框来说明:

先看一哈效果:

Android对话框之对话框风格的窗体

这个窗口其实就是桌面上显示的。

下面看一哈代码:

 

public class Upgrade extends Activity{
 static final String Tag="DropEggUpgrade";
 
 private Context mContext;
 private Dialog mUpgradeDialog;
 
 public void setContext(Context context){
  mContext = context;
 }
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContext(this);
  showDialog();
 }

 

 //可以重载,此处是自己写的方法

 public void showDialog(){
  //GameLog.log(Tag, "showDialog");
  mUpgradeDialog = createDialog();
  mUpgradeDialog.show();
 }
 
 private Dialog createDialog(){
  //GameLog.log(Tag, "createDialog");
  AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
  
  builder.setIcon(mContext.getResources().getDrawable(R.drawable.app_icon));
  builder.setTitle("升级");
  builder.setMessage("恭喜你,通关了!后续游戏更精彩,是否需要升级?");
  builder.setPositiveButton("升级", new OnClickListener() {
   
   @Override
   public void onClick(DialogInterface dialog, int which) {
    //do upgrade work
    Toast.makeText(mContext, "后台升级中...", Toast.LENGTH_LONG).show();
    dialog.cancel();
    Upgrade.this.finish();
   }
  });
  builder.setNegativeButton("暂不升级", new  OnClickListener() {
   
   @Override
   public void onClick(DialogInterface dialog, int which) {
    Toast.makeText(mContext, "您已取消升级", Toast.LENGTH_LONG).show();
    dialog.cancel();
    Upgrade.this.finish();
   }
  });
  return builder.create();
 }
}

 

最重要的是要在Manifest.xml中加入风格:

<activity android:name="com.tencent.upgrade.DropEggUpgrade"
       android:theme="@android:style/Theme.Dialog">
       <intent-filter>
          
           <action android:name="com.tencent.dropegg.upgrade"/>
           <category android:name="android.intent.category.DEFAULT"/>
       </intent-filter>
   </activity>

 

到此,一个窗体对话框就开发完了。

原创粉丝点击