android自定义dialog弹出框、透明背景
2012-10-16 21:49
507 查看
Dialog是android开发过程中最常用到的组件之一,它包括以下几种类型:
警告对话框:Alertialog
进度对话框:ProgressDialog
日期选择对话框:DatePickerDialog
时间选择对话框:TimePickerDialog
自定义对话框:从Dialog继承
Dialog的创建方式有两种:
一是直接new一个Dialog对象,然后调用Dialog对象的show和dismiss方法来控制对话框的显示和隐藏。
二是在Activity的onCreateDialog(int id)方法中创建Dialog对象并返回,然后调用Activty的showDialog(int id)和dismissDialog(int id)来显示和隐藏对话框。
区别在于通过第二种方式创建的对话框会继承Activity的属性,比如获得Activity的menu事件等。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
CondimentDialog.java
public class CondimentDialog extends Dialog{
private Context mContext;
private Button okButton;
public CondimentDialog(Context context, int theme) {
super(context,theme);
mContext = context;
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.dialog);
LayoutParams params = getWindow().getAttributes();
params.height = LayoutParams.WRAP_CONTENT;
params.width = LayoutParams.WRAP_CONTENT;
getWindow().setAttributes((android.view.WindowManager.LayoutParams) params);
okButton = (Button)findViewById(R.id.btnOK);
okButton.setText("shuosdhsfsdfsdf");
okButton.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
Log.e("dialog dismiss","dismiss+++++++++++++++++++++++++++");
dismiss();
} }
);
}
protected void onStop() {
Log.e("dialog onStop","dialog onStop+++++++++++++++++++++++++++");
}
}
TestAdroidtbActivity.java
public class TestAdroidtbActivity extends Activity {
/** Called when the activity is first created. */
private TextView textView;
private Button button_ok;
private Context mContext;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textView = (TextView)this.findViewById(R.id.itemName);
button_ok = (Button)this.findViewById(R.id.btnOK);
button_ok.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.e("activity", "onclick....");
CondimentDialog dialog = new CondimentDialog(TestAdroidtbActivity.this,R.style.dialog);
dialog.setCanceledOnTouchOutside(false);
dialog.show();
}
});
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relmain"
android:layout_width="200dp"
android:layout_height="200dp"
android:orientation="vertical"
android:background="@color/tb">
<TextView
android:id="@+id/itemName"
android:layout_height="wrap_content"
android:layout_width="fill_parent" android:textSize="20dp"
android:gravity="center"
android:layout_marginTop="50px"
android:layout_marginLeft="8px"
android:layout_marginRight="8px"
android:text="弹出对话框"/>
<Button
android:id="@+id/btnOK"
android:text="ok"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:gravity="center"
android:layout_marginTop="80px"
android:layout_marginLeft="15px"/>
</RelativeLayout>
dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="819px"
android:layout_height="483px"
android:background="@drawable/pig">
<Button
android:id="@+id/btnOK"
android:text="ok"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginTop="180px"
android:layout_marginLeft="300px"/>
</LinearLayout>
styles.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Transparent">
<item name="android:windowBackground">@color/transparent_background</item>
<item name="android:windowNoTitle">true</item>
</style>
<style name="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/transparent</item><!--背景透明-->
<item name="android:backgroundDimEnabled">false</item><!--模糊-->
</style>
</resources>
color.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="transparent_background">#880000AA</color>
<color name="tb">#FFF000</color>
<color name="transparent">#00FFFFFF</color>
</resources>
警告对话框:Alertialog
进度对话框:ProgressDialog
日期选择对话框:DatePickerDialog
时间选择对话框:TimePickerDialog
自定义对话框:从Dialog继承
Dialog的创建方式有两种:
一是直接new一个Dialog对象,然后调用Dialog对象的show和dismiss方法来控制对话框的显示和隐藏。
二是在Activity的onCreateDialog(int id)方法中创建Dialog对象并返回,然后调用Activty的showDialog(int id)和dismissDialog(int id)来显示和隐藏对话框。
区别在于通过第二种方式创建的对话框会继承Activity的属性,比如获得Activity的menu事件等。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
CondimentDialog.java
public class CondimentDialog extends Dialog{
private Context mContext;
private Button okButton;
public CondimentDialog(Context context, int theme) {
super(context,theme);
mContext = context;
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.dialog);
LayoutParams params = getWindow().getAttributes();
params.height = LayoutParams.WRAP_CONTENT;
params.width = LayoutParams.WRAP_CONTENT;
getWindow().setAttributes((android.view.WindowManager.LayoutParams) params);
okButton = (Button)findViewById(R.id.btnOK);
okButton.setText("shuosdhsfsdfsdf");
okButton.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
Log.e("dialog dismiss","dismiss+++++++++++++++++++++++++++");
dismiss();
} }
);
}
protected void onStop() {
Log.e("dialog onStop","dialog onStop+++++++++++++++++++++++++++");
}
}
TestAdroidtbActivity.java
public class TestAdroidtbActivity extends Activity {
/** Called when the activity is first created. */
private TextView textView;
private Button button_ok;
private Context mContext;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textView = (TextView)this.findViewById(R.id.itemName);
button_ok = (Button)this.findViewById(R.id.btnOK);
button_ok.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.e("activity", "onclick....");
CondimentDialog dialog = new CondimentDialog(TestAdroidtbActivity.this,R.style.dialog);
dialog.setCanceledOnTouchOutside(false);
dialog.show();
}
});
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relmain"
android:layout_width="200dp"
android:layout_height="200dp"
android:orientation="vertical"
android:background="@color/tb">
<TextView
android:id="@+id/itemName"
android:layout_height="wrap_content"
android:layout_width="fill_parent" android:textSize="20dp"
android:gravity="center"
android:layout_marginTop="50px"
android:layout_marginLeft="8px"
android:layout_marginRight="8px"
android:text="弹出对话框"/>
<Button
android:id="@+id/btnOK"
android:text="ok"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:gravity="center"
android:layout_marginTop="80px"
android:layout_marginLeft="15px"/>
</RelativeLayout>
dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="819px"
android:layout_height="483px"
android:background="@drawable/pig">
<Button
android:id="@+id/btnOK"
android:text="ok"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginTop="180px"
android:layout_marginLeft="300px"/>
</LinearLayout>
styles.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Transparent">
<item name="android:windowBackground">@color/transparent_background</item>
<item name="android:windowNoTitle">true</item>
</style>
<style name="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/transparent</item><!--背景透明-->
<item name="android:backgroundDimEnabled">false</item><!--模糊-->
</style>
</resources>
color.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="transparent_background">#880000AA</color>
<color name="tb">#FFF000</color>
<color name="transparent">#00FFFFFF</color>
</resources>
相关文章推荐
- Android中利用Activity自定义背景透明、大小和位置Dialog
- android 自定义Dialog背景透明及显示位置设置
- android 自定义Dialog背景透明及显示位置设置
- Android自定义半透明背景弹窗非popwindow/dialog超简单任意编写!
- android 自定义Dialog背景透明及显示位置设置
- android 自定义Dialog背景透明及显示位置设置的方法
- android 自定义Dialog背景透明及显示位置设置
- Android 5.0 自定义dialog 背景不透明解决方法
- android 自定义Dialog背景透明及显示位置设置
- android 自定义Dialog背景透明及显示位置设置
- android 自定义Dialog背景透明及显示位置设置
- android 自定义Dialog背景透明及显示位置设置
- android 自定义Dialog背景透明及显示位置设置
- android 自定义Dialog背景透明及显示位置设置
- android 自定义Dialog背景透明及显示位置设置
- Android 自定义Dialog背景透明及显示位置设置
- android 自定义Dialog背景透明及显示位置设置
- android 自定义Dialog背景透明及显示位置设置(转载)
- Android 自定义Dialog背景透明及显示位置设置
- android 自定义Dialog背景透明及显示位置设置