[안드로이드] 스파크 화면 설치

10827 단어 AndroidUX
처음 뵙겠습니다!
아직 미성숙한 학생 프로그래머지만 열심히 하겠습니다.

스파크 고려


그렇다면 앱을 만들 때 가장 먼저 떠오르는 것은 튀는 화면이다.
지금까지 설정 버튼setContentView()으로 표시되어 있습니다.
별다른 고려 없이 이루어졌기 때문에 이 정도면 될 것 같다.
그런데 그러면 사용자 체험이 나빠져요!유식한 사람에게 심기가 돌자 실시setTheme()가 시작됐다고 들었다.
그렇게 될 때까지 우여곡절 보고!

setContentView()에서 한 일


늙은이야.레이아웃 파일을 읽고 View를 구성합니다.setTheme()와의 가장 큰 차이점은view를 표시하는 것이다.

setTheme()에서 한 일


그 액티비티 테마 설정해줘.setContentView()와는 달리 시작 순간을 적용하는 행위다.
보통setContentView()[어플리케이션 시작] -> [onCreate] -> [Theeme의 확인] -> [setContent View] -> 튀는 View 표시
이 [Theme의 확인]은 기본적으로 순백(검은색) 화면으로 프로그램을 시작하면 순식간에 볼 수 있다.시작할 때의 처리가 매우 무거우면 프로그램이 시작된 후에 그것을 잠시 볼 수 있을 것이다.
사용setTheme()[애플리케이션 시작] -> [onCreate] -> [setTheeme] -> 튀는 화면 표시 -> [setContentView] -> View 표시
가동 시 처리의 영향을 받지 않고 응용 가동 후 튀는 화면에 대한 반응이 매우 빠르다.이렇게 되면 사용자의 체험도 좋아질 것이다.

주의점

setTheme()에 스파크 화면을 설치하면 Activity의 화면 이동 등 애니메이션이 적용되지 않습니다.

설치 예


@yamikoo@github 기사를 참고하게 해 주세요.
나는 실복을 시도할 때도 자신의 취향에 따라 글을 쓴다.
https://qiita.com/yamikoo@github/items/c82ea335968709a9d32a
대충 말하다
  • drawable에 새 XML 파일 만들기
  • styles.xml 편집
  • Manifest 파일 편집
  • Activity 편집
  • 필요

    단계 ① drawable에서 새 XML 파일 만들기


    res/drawable에 새 XML 파일을 만듭니다.
    splash.xml
    
    <?xml version="1.0" encoding="utf-8"?>
    <layer-list
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:opacity="opaque"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <item
            android:drawable="@color/splashBackground"/>
    
        <item>
            <bitmap
                android:gravity="center"
                android:src="@drawable/splash_img" />
        </item>
    
    </layer-list>
    
    

    ② 스타일.xml 편집


    res/values/styles.xml에 새 스타일을 추가합니다.이번에는 SplashTheeme.
    styles.xml
    
    <resources>
    
        <!-- Base application theme. -->
        <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
            <!-- Customize your theme here. -->
            <item name="colorPrimary">@color/colorPrimary</item>
            <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
            <item name="colorAccent">@color/colorAccent</item>
        </style>
    
        <style name="AppTheme.NoActionBar">
            <item name="windowActionBar">false</item>
            <item name="windowNoTitle">true</item>
        </style>
    
        <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
    
        <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
    
        <style name="SplashTheme" parent="AppTheme">
            <item name="android:windowBackground">@drawable/splash</item>
        </style>
    
    </resources>
    
    
    

    ③단계 Manifest 파일 편집


    방금 추가한 스타일을 설정합니다.
    AndroidManifest.부분 발췌문
    
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:theme="@style/SplashTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
    
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    
    

    ④ Activity 편집


    포인트는 Thread.sleep(1000)를 초당 스파크 화면으로 설정하는 것이다.그리고 1초 후에 원래의 주제로 돌아갑니다.나의 상황은 원래 R.style.AppTheme_NoActionBar였다.
    MainActivity.부분 발췌문
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // splash
        try {
            Thread.sleep(1000);
    
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    
        setTheme(R.style.AppTheme_NoActionBar);
        setContentView(R.layout.activity_main);
    
        /**** Do something... ****/
    }
    
    
    이렇게 해서 실현되었다.

    푹 빠진 곳


    튀는 화면 사이즈가 이상해요.


    이번에는 스파크를 위해 PNG 형식(265x470)을 준비했다.
    ImageView의 경우 속성match_parent으로 하면 화면에 많은 이미지가 표시되지만 그렇지 않습니다.
    XML 파일을 다시 한 번 보면 이미지가bitmap으로 정의되어 있음을 알 수 있습니다.따라서 치수별로 표시됩니다.
    splash.부분 발췌문
    
    <bitmap
        android:gravity="center"
        android:src="@drawable/splash_img" />
    
    
    나는 265x470의 그림을 사용했기 때문에 화면이 가득 보이지 않았다.이렇게 되면 공백이 생긴다.
    이것을 회피하는 방법은 여러 가지 연구가 있는 것 같지만 결과는 안 될 것 같다.
    https://stackoverflow.com/questions/23079355/android-bitmap-image-size-in-xml
    무슨 좋은 방법이 있으면 저에게 알려주세요.

    회피 방법(⇔;;)


    아무것도 피하지 못했지만 난 그렇게 했어.
    다시 한 번 splash.xml을 보십시오.
    splash.xml 발췌문
    
    <item
        android:drawable="@color/splashBackground"/>
    
    
    colors.xml에서 새 splashBackground를 정의하고 공백 색을 설정합니다.
    이렇게 하면 나는 그것을 볼 수 있다.

    최후


    사용자 체험이 어렵다는 것을 깨달았지만 조금이나마 개선됐으면 한다.

    참고 자료


    @yamikoo@github선생님
    HEADLINE: Android 오프라인 화면 설치
    https://qiita.com/yamikoo@github/items/c82ea335968709a9d32a

    좋은 웹페이지 즐겨찾기