如何控制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>
全部完毕可以运行查看结果,实现了透明效果。希望能帮助一些人吧!