创建透明活动时,我有一些问题

时间:2018-09-03 15:30:04

标签: android

  1. 我将windowBackground设置为样式:

    <style name="AppTheme" parent="Theme.AppCompat.DayNight">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:windowBackground">@color/transparent</item>
        <item name="android:windowIsTranslucent">false</item>
    </style>
    
  2. 不更改活动内容xml中的任何内容:

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello World!"
            android:textColor="@color/colorAccent"
            android:textSize="40sp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
    </android.support.constraint.ConstraintLayout>
    
  3. 启动活动,但是窗口完全是黑色的,为什么??? 是因为PhoneWindow的画布是黑色

  4. 更改样式属性:

    <item name="android:windowIsTranslucent">true</item>
    

然后,我进行了透明的活动。那么windowIsTranslucent做了什么?

1 个答案:

答案 0 :(得分:1)

在您的res/values/styles.xml文件中添加以下样式(如果没有样式,请创建它。)这是一个完整的文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="Theme.Transparent" parent="android:Theme">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:backgroundDimEnabled">false</item>
  </style>
</resources>

(值@color/transparent是我放入#00000000文件中的颜色值res/values/color.xml。您也可以在更高的Android版本中使用@android:color/transparent。)

然后将样式应用于您的活动,例如:

<activity android:name=".SampleActivity" android:theme="@style/Theme.Transparent">
...
</activity>