http://blog.csdn.net/xiaochun91103/article/details/6199370
在Android中可以直接使用Dialog实现提示窗口。也可以使用Activity来实现自定义的dialog。本文就是使用Activity来实现一个自定义的Dialog。
主类的实现如下:
- packagecom.xiaochun91103;
- importandroid.app.Activity;
- importandroid.content.Intent;
- importandroid.os.Bundle;
- importandroid.view.View;
- importandroid.view.View.OnClickListener;
- importandroid.widget.Button;
- publicclassCustomerDialogextendsActivity{
- /**Calledwhentheactivityisfirstcreated.*/
- privateButtonbt;
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- bt=(Button)findViewById(R.id.bt);
- bt.setOnClickListener(newOnClickListener(){
- @Override
- publicvoidonClick(Viewv){
- //TODOAuto-generatedmethodstub
- Intentintent=newIntent(CustomerDialog.this,DialogActivity.class);
- startActivity(intent);
- }
- });
- }
- }
布局如下,main.xml:
- <?xmlversion="1.0"encoding="utf-8"?>
- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="用于自定义一个Activity的主题来实现用户自定义Dialog"
- />
- <Button
- android:id="@+id/bt"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="DialogTest"
- />
- </LinearLayout>
Dialog类的实现如下:
- packagecom.xiaochun91103;
- importandroid.app.Activity;
- importandroid.os.Bundle;
- publicclassDialogActivityextendsActivity{
- @Override
- protectedvoidonCreate(BundlesavedInstanceState){
- //TODOAuto-generatedmethodstub
- super.onCreate(savedInstanceState);
- setContentView(R.layout.dialogactivity);
- }
- }
布局如下dialogactivity.xml:
- <?xmlversion="1.0"encoding="utf-8"?>
- <TextViewxmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/text"
- android:layout_width="fill_parent"android:layout_height="fill_parent"
- android:gravity="center_vertical|center_horizontal"
- android:text="customeractivitylookslikeadialog.customerdialogtest!!!"
- android:background="#992222"/>
最重要的一点,需要在AndroidManifest.xml下声明Activity的同时定义Activity的主题,这样才会出现Dialog的效果。
- <activityandroid:name=".DialogActivity"
- android:theme="@android:style/Theme.Dialog"></activity>
上个截图:
http://www.iteye.com/topic/504331
定义一个Activity的显示主题为Theme.Dialog,实现自定义对话框的样式。
一、定义一个主题样式 Theme.CustomDialog 实现个性化的对话框。
1、AndroidManifest.xml 文件中,申明 activity 的主题使用自定义对话框样式。
2、res/values/styles.xml 样式文件中定义一个对话框主题样式,这里继承了 android:style/Theme.Dialog 主题,并且窗口样式 android:windowBackground 引用了 @drawable/filled_box
3、res/drawable/filled_box.xml 定义了 Shape 类型的 drawable(抽象的可画区域),最终是通过这个来实现新对话框的样式。
二、个性化Dialog小图标,主要代码如下:
@
1、申请设置个性化小图标,需在 setContentView(R.layout.dialog_activity) 之前调用。
2、设置小图标
一、定义一个主题样式 Theme.CustomDialog 实现个性化的对话框。
1、AndroidManifest.xml 文件中,申明 activity 的主题使用自定义对话框样式。
- <activityandroid:name=".app.CustomDialogActivity"
- android:label="@string/activity_custom_dialog"
- android:theme="@style/Theme.CustomDialog">
- <intent-filter>
- <actionandroid:name="android.intent.action.MAIN"/>
- <categoryandroid:name="android.intent.category.SAMPLE_CODE"/>
- </intent-filter>
- </activity>
2、res/values/styles.xml 样式文件中定义一个对话框主题样式,这里继承了 android:style/Theme.Dialog 主题,并且窗口样式 android:windowBackground 引用了 @drawable/filled_box
- <stylename="Theme.CustomDialog"parent="android:style/Theme.Dialog">
- <itemname="android:windowBackground">@drawable/filled_box</item>
- </style>
3、res/drawable/filled_box.xml 定义了 Shape 类型的 drawable(抽象的可画区域),最终是通过这个来实现新对话框的样式。
- <shapexmlns:android="http://schemas.android.com/apk/res/android">
- <solidandroid:color="#f0600000"/>
- <strokeandroid:width="3dp"color="#ffff8080"/>
- <cornersandroid:radius="3dp"/>
- <paddingandroid:left="10dp"android:top="10dp"
- android:right="10dp"android:bottom="10dp"/>
- </shape>
二、个性化Dialog小图标,主要代码如下:
@
- Override
- protectedvoidonCreate(BundlesavedInstanceState){
- //Besuretocallthesuperclass.
- super.onCreate(savedInstanceState);
- requestWindowFeature(Window.FEATURE_LEFT_ICON);
- //Seeassets/res/any/layout/dialog_activity.xmlforthis
- //viewlayoutdefinition,whichisbeingsethereas
- //thecontentofourscreen.
- setContentView(R.layout.dialog_activity);
- getWindow().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON,
- android.R.drawable.ic_dialog_alert);
- }
1、申请设置个性化小图标,需在 setContentView(R.layout.dialog_activity) 之前调用。
- requestWindowFeature(Window.FEATURE_LEFT_ICON);
2、设置小图标
- getWindow().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON,
- android.R.drawable.ic_dialog_alert);
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
http://blog.csdn.net/xiaochun91103/article/details/6228190
Android中实现前台Activity的半透明效果。
- packagecom.xiaochun91103;
- importandroid.app.Activity;
- importandroid.content.Intent;
- importandroid.os.Bundle;
- importandroid.view.View;
- importandroid.view.View.OnClickListener;
- importandroid.widget.Button;
- publicclassTranslucentTestextendsActivity{
- /**Calledwhentheactivityisfirstcreated.*/
- privateButtonbt;
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- bt=(Button)findViewById(R.id.bt);
- bt.setOnClickListener(newOnClickListener(){
- @Override
- publicvoidonClick(Viewv){
- //TODOAuto-generatedmethodstub
- Intentintent=newIntent(TranslucentTest.this,show.class);
- startActivity(intent);
- }
- });
- }
- }
在点击Button之后,弹出前台Activity为半透明的。
- packagecom.xiaochun91103;
- importandroid.app.Activity;
- importandroid.os.Bundle;
- publicclassshowextendsActivity{
- @Override
- protectedvoidonCreate(BundlesavedInstanceState){
- //TODOAuto-generatedmethodstub
- super.onCreate(savedInstanceState);
- setContentView(R.layout.show);
- }
- }
在此App种需要声明前台Activity的主题为半透明:
styles.xml
- <?xmlversion="1.0"encoding="utf-8"?>
- <resources>
- <mce:stylename="Theme.Translucent"parent="android:style/Theme.Translucent"><!--
- <itemname="android:windowNoTitle">true</item>
- <itemname="android:colorForeground">#fff</item>
- --></mce:style><stylename="Theme.Translucent"parent="android:style/Theme.Translucent"mce_bogus="1"><itemname="android:windowNoTitle">true</item>
- <itemname="android:colorForeground">#fff</item>
- </style>
- </resources>
重点是在Manifest文件下声明Activity时,指定Activity的主题
- <activity
- android:name=".show"
- android:theme="@style/Theme.Translucent"
- />
运行截图如下: