将Activity设置成透明的或者弹窗形式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhaozhiwen6140/article/details/52034495

实现Activity的两种自定义属性:

1.将Activity的背景设置成透明的或者是半透明的,这样可以看到Activity之下的界面显示的是什么但是不能点击。

实现全透明:

首先在styles.xml中添加全透明的style:

<style name="myTransparent" parent="@android:style/Theme.Translucent.NoTitleBar">
    <item name="android:windowBackground">@color/transparent</item>
    <item name="android:windowAnimationStyle">@null</item>
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowNoTitle">true</item> <!-- 无标题 -->
    <item name="android:windowContentOverlay">@null</item>
</style>
其中,@color/transparent中的transparent是在color.xml中添加
<color name="transparent">#00000000</color>
然后在AndroidManifest.xml中对需要设置成透明的Activity的Theme进行添加即可:
<activity
    android:name=".MainActivity"
    android:theme="@style/myTransparent">
</activity>
这样,MainActivity就变成完全透明的了。
实现半透明:
如果想实现半透明,只需要在全透明的style中添加
<item name="android:backgroundDimEnabled">true</item><!-- 半透明 -->
其余操作一样,就能实现半透明的效果。

注意:如果想要修改Activity的Theme,会出现 “You need to use a Theme.AppCompat theme (or descendant) with the design library的错误,这个错误的原因是如果你的Activity继承的是AppCompatActivity

或者是ActionbarActivity的话,就需要用到Theme.AppCompat的Theme,而不能用自定义的Theme,解决的方法就是让你的Activity直接继承Activity即可。比如public class MainActivity extends Activity。
(注意,有可能刚创建工程的时候就是继承的AppCompatActivity,在修改继承之后也需要注意xml文件是否需要修改,AppCompatActivity的xml文件中有控件
CoordinatorLayout,而继承Activity的Activity识别不了这个控件,如果不改,同样也会出现上面的那个bug。

2.将Activity设置成弹窗的形式。

首先在styles.xml中添加弹窗格式的style:

<style name="Theme.FloatActivity" parent="android:style/Theme.Dialog">
    <item name="android:windowBackground">@drawable/background</item>
</style>
其中,background为(在drawable文件夹下):
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#ffffff" /><!--Activity的填充颜色-->
    <corners android:radius="10dp" /><!--圆角弧度-->
    <padding android:left="5dp" android:top="5dp"
        android:right="5dp" android:bottom="5dp" />
</shape>
 
 
然后在AndroidManifest.xml中对需要设置成弹窗的Activity的Theme进行添加即可:
<activity
    android:name=".TranslucentActivity"
    android:theme="@style/Theme.FloatActivity"></activity>
完成。

猜你喜欢

转载自blog.csdn.net/zhaozhiwen6140/article/details/52034495