Android AppWidget에서 Snakbar 사용
개요
안드로이드의 AppWidget에 사용Snackbar 방법을 적으십시오.
What is "Snackbar"?
Toast와 비슷한 안드로이드의 팝업 기능화면 아래에서 짜내면 일정 시간이 지나면 화면 아래로 움츠러든다.
특징.
이루어지다
그럼, 우리 빨리 해 봅시다.
의존성 추가
app/build.gradle에 Design Support library 의존, sync를 추가하십시오.
app/build.gradledependencies {
def supportLibVersion = '25.3.1'
compile 'com.android.support:appcompat-v7:' + supportLibVersion
compile 'com.android.support:support-v4:' + supportLibVersion
compile 'com.android.support:design:' + supportLibVersion
}
메시지 보이기
아주 간단하게 다음 코드로 표시할 수 있습니다.보기에 Context가 View인 것을 제외하고는 Toast와 기본적으로 똑같이 쓸 수 있다.
메시지 보이기Snackbar.make(view, "Text", Snackbar.LENGTH_SHORT).show();
색깔을 바꾸다
Snakbar는 색상을 변경할 수 있습니다.이 때, 대상을 저장하고 getView () 방법으로 View를 가져오고, setBackgroundColor
임의의 색을 설정합니다.물론 투과도 가능하죠.
색상 수정final Snackbar snackbar = Snackbar.make(view, "Text", Snackbar.LENGTH_SHORT);
snackbar.getView().setBackgroundColor(color);
Action
Snakbar는 사용자에게 추가 동작을 알릴 수 있다.setAction을 통해 탭의 Text와 눌렸을 때 동작을 정의한 Listener를 건네줍니다.
추가 작업 구성snackbar.setAction("Next!", new View.OnClickListener() {
@Override
public void onClick(final View v) {
Toast.makeText(v.getContext(), "Why?", Toast.LENGTH_SHORT).show();
}
});
주의
dependencies {
def supportLibVersion = '25.3.1'
compile 'com.android.support:appcompat-v7:' + supportLibVersion
compile 'com.android.support:support-v4:' + supportLibVersion
compile 'com.android.support:design:' + supportLibVersion
}
Snackbar.make(view, "Text", Snackbar.LENGTH_SHORT).show();
final Snackbar snackbar = Snackbar.make(view, "Text", Snackbar.LENGTH_SHORT);
snackbar.getView().setBackgroundColor(color);
snackbar.setAction("Next!", new View.OnClickListener() {
@Override
public void onClick(final View v) {
Toast.makeText(v.getContext(), "Why?", Toast.LENGTH_SHORT).show();
}
});
AppWidget에서 Snakbar 사용
위에서 설명한 대로 View를 직접 조작할 수 없는 AppWidget에서는 Snakbar를 사용할 수 없습니다.앱위젯을 주체로 하는 앱이라 모처럼의 기능을 못 쓰게 돼 아쉬우니 어떻게든 해결해보려고 한다.
비록 정면 공격은 아니지만 가상의 투명한 Activity를 표시하고 Visew를 사용하여 Snakbar를 표시하는 방법을 고려했다.
샘플 코드
에 업로드되었습니다.
샘플 GIF
GiitHub 웨어하우스
AppWidget의 각 색상을 클릭하면 해당 색상의 Snakbar가 표시되며 "Next 오류 33;"why라는 토스트를 남겼다.신구 공연.
이루어지다
요점은 다음과 같은 네 가지다.
overridePendingTransition(0, 0);
에서 Activity를 시작할 때의 Transition을 무효화overridePendingTransition(0, 0);
에서Activity가 끝날 때의 Transition을 무효화1. AppCompoatActivity 계승
AppCompoatActivity가 아니면 Snakbar를 사용할 수 없습니다. 그렇게 하십시오.
2. 투명 테마 사용
다음 투명 테마 정의
app/src/main/res/values/styles.xml
<resources>
<!-- ...... -->
<style name="DummyTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:activityOpenExitAnimation">@null</item>
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowAnimationStyle">@android:style/Animation</item>
<item name="android:windowIsTranslucent">true</item>
</style>
</resources>
AndroidManifest.xml로 설정하십시오.app/src/main/AndroidManifest.xml
<activity
android:name=".DummyActivity"
android:label="@string/app_name"
android:theme="@style/DummyTheme"
>
4. StaturBar의 투명화(API 레벨 21 이후)
Window 클래스의 setStation BarColor에서는 위 열을 투명하게 설정하고, 아래 열을 Snakbar와 같은 색으로 설정합니다.
투명화
private void setStatusBarTransparent() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
window.setStatusBarColor(Color.TRANSPARENT);
window.setNavigationBarColor(mColor);
}
}
5. 자동finish의 Executor 작업 등록
이러다 투명한 액티비티가 남아서 거추장스러우니 비동기 작업에서 덤미액티비티
finish()
를이번에는 Executors.new Single Theread Executor로 간단하게 이렇게 해 보았습니다.자동finish_하다Executor_작업 등록
private void executeFinisher() {
final ExecutorService executorService = Executors.newSingleThreadExecutor();
executorService.execute(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(2000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
finish();
}
});
executorService.shutdown();
}
상관없는 일
스낙바는 패스트푸드점과 모바일 아이스크림 가게를 뜻한다고 한다.스니커스가 아닌 것 같은데.
끝맺다
AppWidget에서 Snaker를 사용하는 방법에 대해 설명했습니다.올바른 방법이 아니고 앞으로 OS 제한으로 못 쓸 수도 있으니 좋은 아이를 흉내내지 마세요.
AppWidget에서 Snaker를 사용하는 방법에 대해 설명했습니다.올바른 방법이 아니고 앞으로 OS 제한으로 못 쓸 수도 있으니 좋은 아이를 흉내내지 마세요.
링크
Reference
이 문제에 관하여(Android AppWidget에서 Snakbar 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/toastkidjp/items/b9d86279aa2cdbbc5bfd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)