首先,我们新建立一个类,继承自Dialog,复写它的构造函数。
package com.lxl.widget;
import android.app.AlertDialog;
import android.content.Context;
public class LoadingDialog extends AlertDialog {
public LoadingDialog(Context context, int theme) {
super(context, theme);
setCanceledOnTouchOutside(false);// dailog的点击之外true为取消,false为不可取消
}
}
然后,我们在工程中res下面的values中的style来定义Dialog的样式。
<resources>
<!-- loading dialog -->
<style name="loading_dialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item> <!-- 边框 -->
<item name="android:windowIsFloating">true</item> <!-- 是否浮现在activity之上 -->
<item name="android:windowIsTranslucent">false</item> <!-- 半透明 -->
<item name="android:windowNoTitle">true</item> <!-- 无标题 -->
<item name="android:windowBackground">@color/black</item> <!-- 自己想要的背景 -->
<item name="android:backgroundDimEnabled">false</item> <!-- 模糊(半黑色透明背景) -->
</style>
</resources>
最后,我们就可以在想要调用Dialog的地方来进行调用。
package com.lxl.code;
import com.example.myutils.R;
import com.lxl.widget.LoadingDialog;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.view.Menu;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends Activity implements OnClickListener {
private Button ldbtn;// loadingDialog button
private LoadingDialog loadingDialog; // 自定义AlertDialog
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iniview();
inilistener();
}
private void iniview() {
// TODO Auto-generated method stub
ldbtn = (Button) findViewById(R.id.loadiingdialog);
}
private void inilistener() {
// TODO Auto-generated method stub
ldbtn.setOnClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.loadiingdialog:
loadingDialog = new LoadingDialog(this, R.style.loading_dialog);// 自定义dialog
// style
this.loadingDialog.show();
Window window = this.loadingDialog.getWindow();
window.setContentView(R.layout.loading_layout);// 加载dialog布局
ImageView img_loading = (ImageView) window
.findViewById(R.id.img_loading);
img_loading.setImageResource(R.drawable.loading_anim);
// 添加读取动画
AnimationDrawable animationDrawable = (AnimationDrawable) img_loading
.getDrawable();
animationDrawable.start();
break;
default:
break;
}
}
}
上效果图,黑怎么办?喜欢的朋友自己调试一下,希望对有需要的朋友们有所帮助。