如何控制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>
全部完毕可以运行查看结果,实现了透明效果。希望能帮助一些人吧!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架