如何控制Activity和Dialog的显示透明度

最近两天做个联系,参考其他资料,现在以最简单形式展示出来,希望给初学者以帮助:

main布局文件://一个测试Button按钮

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns: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="@string/hello"
    />
<Button android:id="@+id/mybutton"
  android:text="测试Dialog"
  android:textColor="@color/black_color"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"/>
</LinearLayout>

Dialog布局文件://一个测试可编辑文本框

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns: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="@string/hello"
    />  
<EditText android:id="@+id/my_edittext"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
/>
</LinearLayout>

Activity java文件类

public class DialogActivityMain extends Activity {
    private Button myButton;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        myButton=(Button)findViewById(R.id.mybutton);
        myButton.setOnClickListener(new View.OnClickListener() {
   
   @Override
   public void onClick(View v) {
    //通过Dialog构造方法参数引入style,实现Dialog半透明效果
      Dialog d=new Dialog(DialogActivityMain.this,R.style.TANCStyle);
           Window window=d.getWindow();
           window.setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND, WindowManager.LayoutParams.FLAG_BLUR_BEHIND);       
           d.setContentView(R.layout.my_first_dialog);
           d.setTitle("显示Dialog");
           d.show();
   }
  });
      
    }
}

以上实现了进入Activity界面后,点击测试按钮,实现探出Dialog对话框,要想实现Activity的透明效果,可做如下工作:

在values文件下创建color.xml文件,内容如下

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <color  name = "transparent">#4000</color >
   <color  name = "black_color">#000000</color >
</resources>

在values文件下创建styles.xml文件,内容如下

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="Transparent">      
    <item name="android:windowBackground">@color/transparent</item> 
    <item name="android:windowIsTranslucent">true</item>        
    <item name="android:windowAnimationStyle">@+android:style/Animation.Translucent</item>  
  </style>
  
     <style name="TANCStyle" parent="@android:style/Theme.Dialog">
        <!-- 更换背景图片实现全透明 -->
        <item name="android:windowBackground">@drawable/panel_background_sodino1</item>
        <!-- 屏幕背景不变暗 -->
        <item name="android:backgroundDimEnabled">false</item>
        <!-- 更改对话框标题栏 -->
        <item name="android:windowTitleStyle">@style/TitleStyle</item>
    </style>
    <style name="TitleStyle" parent="@android:style/DialogWindowTitle">
        <item name="android:textAppearance">@style/TitleText</item>
    </style>
    <style name="TitleText" parent="@android:style/TextAppearance.DialogWindowTitle">
        <!-- 设置Dialog标题栏文字颜色。 -->
        <item name="android:textColor">#000</item>
    </style>
  
</resources>

最后对manifest.xml进行说明:如果想对某个Activity实现透明效果,把  android:theme="@style/Transparent添加到<activity>标签内,如果对所有的Activity实现效果,则添加

到<application>标签内。

   <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".DialogActivityMain"
                  android:label="@string/app_name"
                  android:theme="@style/Transparent">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>

 

全部完毕可以运行查看结果,实现了透明效果。希望能帮助一些人吧!

posted @ 2011-12-16 23:15  灰太狼_lilongmin  阅读(1278)  评论(0编辑  收藏  举报