`

Activity实现自定义Dialog

 
阅读更多

http://blog.csdn.net/xiaochun91103/article/details/6199370

在Android中可以直接使用Dialog实现提示窗口。也可以使用Activity来实现自定义的dialog。本文就是使用Activity来实现一个自定义的Dialog。

主类的实现如下:

  1. packagecom.xiaochun91103;
  2. importandroid.app.Activity;
  3. importandroid.content.Intent;
  4. importandroid.os.Bundle;
  5. importandroid.view.View;
  6. importandroid.view.View.OnClickListener;
  7. importandroid.widget.Button;
  8. publicclassCustomerDialogextendsActivity{
  9. /**Calledwhentheactivityisfirstcreated.*/
  10. privateButtonbt;
  11. @Override
  12. publicvoidonCreate(BundlesavedInstanceState){
  13. super.onCreate(savedInstanceState);
  14. setContentView(R.layout.main);
  15. bt=(Button)findViewById(R.id.bt);
  16. bt.setOnClickListener(newOnClickListener(){
  17. @Override
  18. publicvoidonClick(Viewv){
  19. //TODOAuto-generatedmethodstub
  20. Intentintent=newIntent(CustomerDialog.this,DialogActivity.class);
  21. startActivity(intent);
  22. }
  23. });
  24. }
  25. }

布局如下,main.xml:

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <TextView
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:text="用于自定义一个Activity的主题来实现用户自定义Dialog"
  11. />
  12. <Button
  13. android:id="@+id/bt"
  14. android:layout_width="wrap_content"
  15. android:layout_height="wrap_content"
  16. android:text="DialogTest"
  17. />
  18. </LinearLayout>

Dialog类的实现如下:

  1. packagecom.xiaochun91103;
  2. importandroid.app.Activity;
  3. importandroid.os.Bundle;
  4. publicclassDialogActivityextendsActivity{
  5. @Override
  6. protectedvoidonCreate(BundlesavedInstanceState){
  7. //TODOAuto-generatedmethodstub
  8. super.onCreate(savedInstanceState);
  9. setContentView(R.layout.dialogactivity);
  10. }
  11. }

布局如下dialogactivity.xml:

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <TextViewxmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/text"
  3. android:layout_width="fill_parent"android:layout_height="fill_parent"
  4. android:gravity="center_vertical|center_horizontal"
  5. android:text="customeractivitylookslikeadialog.customerdialogtest!!!"
  6. android:background="#992222"/>

最重要的一点,需要在AndroidManifest.xml下声明Activity的同时定义Activity的主题,这样才会出现Dialog的效果。

  1. <activityandroid:name=".DialogActivity"
  2. android:theme="@android:style/Theme.Dialog"></activity>

上个截图:


Custom Dialog !自定义对话框

http://www.iteye.com/topic/504331

定义一个Activity的显示主题为Theme.Dialog,实现自定义对话框的样式。

一、定义一个主题样式 Theme.CustomDialog 实现个性化的对话框。
1、AndroidManifest.xml 文件中,申明 activity 的主题使用自定义对话框样式。

Java代码收藏代码
  1. <activityandroid:name=".app.CustomDialogActivity"
  2. android:label="@string/activity_custom_dialog"
  3. android:theme="@style/Theme.CustomDialog">
  4. <intent-filter>
  5. <actionandroid:name="android.intent.action.MAIN"/>
  6. <categoryandroid:name="android.intent.category.SAMPLE_CODE"/>
  7. </intent-filter>
  8. </activity>


2、res/values/styles.xml 样式文件中定义一个对话框主题样式,这里继承了 android:style/Theme.Dialog 主题,并且窗口样式 android:windowBackground 引用了 @drawable/filled_box
Java代码收藏代码
  1. <stylename="Theme.CustomDialog"parent="android:style/Theme.Dialog">
  2. <itemname="android:windowBackground">@drawable/filled_box</item>
  3. </style>


3、res/drawable/filled_box.xml 定义了 Shape 类型的 drawable(抽象的可画区域),最终是通过这个来实现新对话框的样式。
Java代码收藏代码
  1. <shapexmlns:android="http://schemas.android.com/apk/res/android">
  2. <solidandroid:color="#f0600000"/>
  3. <strokeandroid:width="3dp"color="#ffff8080"/>
  4. <cornersandroid:radius="3dp"/>
  5. <paddingandroid:left="10dp"android:top="10dp"
  6. android:right="10dp"android:bottom="10dp"/>
  7. </shape>


二、个性化Dialog小图标,主要代码如下:
@
Java代码收藏代码
  1. Override
  2. protectedvoidonCreate(BundlesavedInstanceState){
  3. //Besuretocallthesuperclass.
  4. super.onCreate(savedInstanceState);
  5. requestWindowFeature(Window.FEATURE_LEFT_ICON);
  6. //Seeassets/res/any/layout/dialog_activity.xmlforthis
  7. //viewlayoutdefinition,whichisbeingsethereas
  8. //thecontentofourscreen.
  9. setContentView(R.layout.dialog_activity);
  10. getWindow().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON,
  11. android.R.drawable.ic_dialog_alert);
  12. }

1、申请设置个性化小图标,需在 setContentView(R.layout.dialog_activity) 之前调用。
Java代码收藏代码
  1. requestWindowFeature(Window.FEATURE_LEFT_ICON);


2、设置小图标

Java代码收藏代码
  1. getWindow().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON,
  2. android.R.drawable.ic_dialog_alert);
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。




Activity半透明效果

http://blog.csdn.net/xiaochun91103/article/details/6228190

Android中实现前台Activity的半透明效果。

  1. packagecom.xiaochun91103;
  2. importandroid.app.Activity;
  3. importandroid.content.Intent;
  4. importandroid.os.Bundle;
  5. importandroid.view.View;
  6. importandroid.view.View.OnClickListener;
  7. importandroid.widget.Button;
  8. publicclassTranslucentTestextendsActivity{
  9. /**Calledwhentheactivityisfirstcreated.*/
  10. privateButtonbt;
  11. @Override
  12. publicvoidonCreate(BundlesavedInstanceState){
  13. super.onCreate(savedInstanceState);
  14. setContentView(R.layout.main);
  15. bt=(Button)findViewById(R.id.bt);
  16. bt.setOnClickListener(newOnClickListener(){
  17. @Override
  18. publicvoidonClick(Viewv){
  19. //TODOAuto-generatedmethodstub
  20. Intentintent=newIntent(TranslucentTest.this,show.class);
  21. startActivity(intent);
  22. }
  23. });
  24. }
  25. }

在点击Button之后,弹出前台Activity为半透明的。

  1. packagecom.xiaochun91103;
  2. importandroid.app.Activity;
  3. importandroid.os.Bundle;
  4. publicclassshowextendsActivity{
  5. @Override
  6. protectedvoidonCreate(BundlesavedInstanceState){
  7. //TODOAuto-generatedmethodstub
  8. super.onCreate(savedInstanceState);
  9. setContentView(R.layout.show);
  10. }
  11. }

在此App种需要声明前台Activity的主题为半透明:

styles.xml

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3. <mce:stylename="Theme.Translucent"parent="android:style/Theme.Translucent"><!--
  4. <itemname="android:windowNoTitle">true</item>
  5. <itemname="android:colorForeground">#fff</item>
  6. --></mce:style><stylename="Theme.Translucent"parent="android:style/Theme.Translucent"mce_bogus="1"><itemname="android:windowNoTitle">true</item>
  7. <itemname="android:colorForeground">#fff</item>
  8. </style>
  9. </resources>

重点是在Manifest文件下声明Activity时,指定Activity的主题

  1. <activity
  2. android:name=".show"
  3. android:theme="@style/Theme.Translucent"
  4. />

运行截图如下:


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics