[안드로이드] 스파크 화면 설치
아직 미성숙한 학생 프로그래머지만 열심히 하겠습니다.
스파크 고려
그렇다면 앱을 만들 때 가장 먼저 떠오르는 것은 튀는 화면이다.
지금까지 설정 버튼
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 파일 만들기
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
Reference
이 문제에 관하여([안드로이드] 스파크 화면 설치), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Takahana/items/bd626a1ad8b4f4d9d7c7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)