android-activity theme windowcontentoverlay - Android에서 투명한 활동을 만들려면 어떻게해야합니까?





9 Answers

그것은 이렇게 간다.

<activity android:name=".usual.activity.Declaration" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
nodisplay style translucent

나는 다른 활동 위에 투명한 활동을 만들고 싶다.

이것을 어떻게 할 수 있습니까?




매니페스트에서 다음과 같이 활동을 선언하십시오.

 <activity   
     android:name=".yourActivity"    
     android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>

레이아웃에 투명한 배경을 추가하십시오.




필자는 새로운 안드로이드 개발자이기 때문에 조금 더 추가하고 싶었습니다. 받아 들여진 응답은 중대하다, 그러나 나는 약간 말썽으로 달렸다. colors.xml 파일에 색상을 추가하는 방법을 잘 모르겠습니다. 여기 어떻게 해야하는지입니다 :

colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
     <color name="class_zero_background">#7f040000</color>
     <color name="transparent">#00000000</color>
</resources>

내 원래 colors.xml 파일에서 나는 "drawable"이라는 태그를 가졌다.

<drawable name="class_zero_background">#7f040000</drawable>

그래서 저는 색깔에 대해서도 그렇게했습니다. 그러나 "@ color /"참조는 XML에서 태그 "color"를 찾는 것을 이해하지 못했습니다. 나는 다른 사람들을 돕기 위해 이것을 언급해야한다고 생각했다.




내 경우에는, 나는 조건에 따라 자바에서 런타임에 테마를 설정해야한다. 그래서 한 스타일의 테마를 만들었습니다 (다른 답변과 유사).

<?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>

그런 다음 Java에서 내 활동에 적용했습니다.

@Override
    protected void onCreate(Bundle savedInstanceState) {

        String email = getIntent().getStringExtra(AppConstants.REGISTER_EMAIL_INTENT_KEY);
        if (email != null && !email.isEmpty())
        {
            // We have the valid email ID, no need to take it from user, prepare transparent activity just to perform bg tasks required for login
            setTheme(R.style.Theme_Transparent);
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_login);

        }
        else
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_dummy);


    }

여기서 중요한 점을 기억하십시오 : setTheme() super.onCreate(savedInstanceState); 보다 먼저 setTheme() 함수를 super.onCreate(savedInstanceState); 해야합니다 super.onCreate(savedInstanceState); . 나는이 시점을 놓쳤고 2 시간 동안 갇혔다. 왜 내 테마가 런타임에 반영되지 않는지 생각했다.




액티비티 배경 이미지를 투명하게 만듭니다. 또는 XML 파일에 테마를 추가하십시오.

<activity android:name=".usual.activity.Declaration" android:theme="@android:style/Theme.Translucent.NoTitleBar" />



대화 활동을 위해 나는 이것을 사용합니다 :

getWindow().getDecorView().setBackgroundResource(android.R.color.transparent);

그러나 활동의 기본보기를 보이지 않게 설정해야합니다. 그렇지 않으면 백그라운드의 모든보기가 표시되는 동안 배경이 보이지 않습니다.




그것을 반투명 테마로 지정하십시오.

android:theme="@android:style/Theme.Translucent.NoTitleBar"



참고 1 : Drawable 폴더에서 test.xml을 만들고 다음 코드를 복사하십시오

   <?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <stroke android:width="2dp" />

    <gradient
        android:angle="90"
        android:endColor="#29000000"
        android:startColor="#29000000" />

    <corners
        android:bottomLeftRadius="7dp"
        android:bottomRightRadius="7dp"
        android:topLeftRadius="7dp"
        android:topRightRadius="7dp" />

</shape>

// 참고 : 모서리와 모양은 요구 사항에 따라 다릅니다.

// 참고 2 : Create xml :

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/test"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1.09"
            android:gravity="center"
         android:background="@drawable/transperent_shape"
            android:orientation="vertical" >
     </LinearLayout>
    </LinearLayout>



매니 페스트 파일에서 투명하게 보일 필요가있는 액티비티 태그에 다음 줄을 추가하기 만하면됩니다.

android:theme="@android:style/Theme.Translucent"



Related