您的位置:首页 > 移动开发 > Android开发

Android简明开发教程十八:自定义对话框 Transform

2012-05-20 00:48 621 查看

Android简明开发教程十八:自定义对话框 Transform

发表于
2011 年 04 月 07 日 由
guidebee

Android自带的AlertDialog,ProgressDialog,DatePickerDialog,TimePickerDialog 可以用于简单的对话框显示。当还是有这些对话框不能满足应用需要的时候,这时就可以使用一些自定义的对话框。有多种方法可以实现自定义对话框。一是使用Activity作为Dialog,可以通过设置Activity显示Dialog风格,使得该Activity在外观上和Dialog一致:显示在其它Activity前面且半透明。 

<Activity android:name=”MyDialogActivity” Android:theme=”@android:style/Theme.Dialog“></Activity> 

本例采用另外两种方法来使用自定义对话框,将用这个对话框来最为图形变换(Transform)的选项: 

Primitive: Rectange, Ellipse,Text

Pen: Thin,Thick,Dashed

Brush: Solid, Gradient,Texture

Transform: Identity, Rotate, Scale, Shear

Rendering: Stroke, Fill, Stoke and Fill 

 首先在res\layout 下新建transformoption.xml 作为自定义对话框布局: 

<?xml version=”1.0″ encoding=”utf-8″?> 

<LinearLayout

  xmlns:android=”http://schemas.android.com/apk/res/android

  android:layout_width=”fill_parent”

  android:layout_height=”fill_parent” 

  >

<ScrollView

  android:layout_width=”fill_parent”

  android:layout_height=”fill_parent”>

<LinearLayout

  android:layout_width=”fill_parent”

  android:layout_height=”fill_parent”

  android:orientation=”vertical”

  >

<TextView

   android:text=”Primitive”

   android:layout_width=”wrap_content”

   android:layout_height=”wrap_content”>

 </TextView>

 <RadioGroup

 android:layout_width=”wrap_content”

 android:layout_height=”wrap_content”> 

<RadioButton

android:text=”Rectangle”

android:id=”@+id/radioRectangle”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”>

</RadioButton>

<RadioButton

android:text=”Ellipse”

android:id=”@+id/radioEllipse”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”>

</RadioButton>

<RadioButton

android:text=”Text”

android:id=”@+id/radioText”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”>

</RadioButton>

 </RadioGroup> 

<TextView

   android:text=”Pen”

   android:layout_width=”wrap_content”

   android:layout_height=”wrap_content”>

 </TextView>

 <RadioGroup

 android:layout_width=”wrap_content”

 android:layout_height=”wrap_content”> 

<RadioButton

android:text=”Thin”

android:id=”@+id/radioThin”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”>

</RadioButton>

<RadioButton

android:text=”Thick”

android:id=”@+id/radioThick”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”>

</RadioButton>

<RadioButton

android:text=”Dashed”

android:id=”@+id/radioDashed”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”>

</RadioButton>

 </RadioGroup>

 

<TextView

   android:text=”Brush”

   android:layout_width=”wrap_content”

   android:layout_height=”wrap_content”>

 </TextView>

 <RadioGroup

 android:layout_width=”wrap_content”

 android:layout_height=”wrap_content”> 

<RadioButton

android:text=”Solid”

android:id=”@+id/radioSolid”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”>

</RadioButton>

<RadioButton

android:text=”Gradient”

android:id=”@+id/radioGradient”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”>

</RadioButton>

<RadioButton

android:text=”Texture”

android:id=”@+id/radioTexture”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”>

</RadioButton>

 </RadioGroup>

 

 <TextView

   android:text=”Transform”

   android:layout_width=”wrap_content”

   android:layout_height=”wrap_content”>

 </TextView>

 <RadioGroup

 android:layout_width=”wrap_content”

 android:layout_height=”wrap_content”> 

<RadioButton

android:text=”Identity”

android:id=”@+id/radioIdentity”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”>

</RadioButton>

<RadioButton

android:text=”Rotate”

android:id=”@+id/radioRotate”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”>

</RadioButton>

<RadioButton

android:text=”Scale”

android:id=”@+id/radioScale”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”>

</RadioButton>

<RadioButton

android:text=”Shear”

android:id=”@+id/radioShear”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”>

</RadioButton>

 </RadioGroup>

 

 <TextView

   android:text=”Rendering”

   android:layout_width=”wrap_content”

   android:layout_height=”wrap_content”>

 </TextView>

 <RadioGroup

 android:layout_width=”wrap_content”

 android:layout_height=”wrap_content”> 

<RadioButton

android:text=”Stroke”

android:id=”@+id/radioStroke”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”>

</RadioButton>

<RadioButton

android:text=”Fill”

android:id=”@+id/radioFill”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”>

</RadioButton>

<RadioButton

android:text=”Stroke and Fill”

android:id=”@+id/radioStrokeFill”

android:layout_width=”wrap_content”

android:layout_height=”wrap_content”>

</RadioButton>

 </RadioGroup>

 </LinearLayout>

</ScrollView>

</LinearLayout> 

 一种方法是重新定制AlertDialog ,基本步骤和Android简明开发教程十七:Dialog 显示图像类似,但是在protected Dialog onCreateDialog(int id) ,需要重新设定Dialog的Content View并给RadioButton添加事件处理: 

帮助
第二种是通过派生Dialog ,定义了一个OptionDialog类作为Dialog子类。 

帮助
这两种方法在显示Dialog时有所不同: 

帮助
下面是完整代码: 

帮助




上面代码中包含了两种方法的代码,实际应用中可以任选其一。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息