Toast의 업글버전? Snackbar(스낵바)를 써보자
Toast의 업글버전?
Snackbar(스낵바)를 써보자
ㆍ 오늘 심심해서 샘플프로젝트를 하던중에 snackbar라는 놈이
있어서 사용해봤습니다. 거의 뭐 Toast급으로 쓰기 쉬워서
한번 사용해 보시라고 이렇게 글을 쓰게 되었습니다.
안드로이드 5.0 롤리팝때 Material Design이 도입되었는데
그 중에 포함되어 있는 내용입니다.
일단 사용방법전에
왜 Toast의
업글버전이라고
하는지 직접 먼저
결과물을 보겠습니다.
앱을 실행하자마자
뜨게 설정해놨는데
느낌이 잘 안사네요
버튼 누르면 뜨게 할걸..
뭐 대충 저런 모양입니다.
아래에서 위로 올라오는
그리고 시간 지나면 아래로 내려가는데
영상편집하다가 짤린듯..
내려가는건..
뭐 모양만으로 봐도
Toast랑 다르긴 합니다.
근데 이것만 봐서는
크게 다른점은 모르겠습니다.
다음 gif에서
Snackbar와 Toast의
차이점을 보겟습니다
잘 보이십니까
안내메시지에서
버튼을 한번 더
누를수 있습니다.
일단 그냥 토스트만
간단하게
띄워놨는데
잘 만 이용하면
괜찮은 기능도 가능할
것 같습니다.
그럼 바로 사용방법을
알아보도록
하겠습니다.
일단 프로젝트를
하나 켜시고
첫번째, Support:design Library를 추가시키자!
예
사용전에 준비사항은
말 그대로
저거만 추가시키면 끝입니다
Recyclerview 추가시키듯
똑같이 시키면 됩니다.
Ctrl+Alt+Shift+S를
눌러서
좌측하단에
[app] 클릭하시고
가운데 상단 탭에
Dependencies
눌러주시고
바로 보일수도 있는데
안보이시면
design이라고 검색하시면
아래와 같이 바로 뜨는데
추가시켜주세요~
그 다음, 바로 사용하세요~
사용전에 그래도
사용방법을 알아보면
저대로 넣어주면 됩니다
현재 View, 원하는
텍스트, 지속기간
뭐 버튼 눌렀을때
토스트처럼 띄우는
코드를 바로 보면
findViewById(R.id.btn).setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Snackbar.make(v, "ITPANGPANG", Snackbar.LENGTH_SHORT).show();
}
});
완전 비슷합니다.
뭐 Context대신
View들어가는거 말곤
판박이죠
아 여기서
액티비티에서
바로 띄우시려는 분이
얼마나 될지 모르겠지만
액티비티 뷰는 이렇게
구하시면 됩니다.
Snackbar.make(getWindow().getDecorView().getRootView(), "ITPANGPANG", Snackbar.LENGTH_LONG).show();
유지시간은
위에 나와있듯이
int duration
넣으시면 됩니다
뭐 10초라면
findViewById(R.id.btn).setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Snackbar.make(v, "ITPANGPANG", 10000).show();
}
});
이렇게 되겠죠?
자 그렇다면
이번에는
버튼을 누를수
있도록 코드를
조금더 추가해보겠습니다.
코드가 길지도 않습니다.
findViewById(R.id.btn).setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Snackbar.make(v, "ITPANGPANG", 10000).setAction("YES", new View.OnClickListener()
{
@Override
public void onClick(View v)
{
//할거
}
}).show();
}
});
setAction을 써주시고
추가시킬 Text 적으시고
그 옆에 바로 클릭리스너
달아주시면 됩니다
이번에는 스낵바(Snackbar)에서
저 누를수 있는
버튼 색깔을
변경시켜보겠습니다
이것은 요렇게
findViewById(R.id.btn).setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Snackbar.make(v, "ITPANGPANG", 10000).setActionTextColor(Color.parseColor("#FF0000"))
.setAction("YES", new View.OnClickListener()
{
@Override
public void onClick(View v)
{
//할거
}
}).show();
}
});
저 ITPANGPANG 글씨색
바꾸는법도 있으나
저건 좀 작업해야되서
다음번에 기회가 되면
2탄으로 쓰겠습니다.
음
다음은..
스낵바 background를
바꿔볼까요?
자 이건
요렇게~
findViewById(R.id.btn).setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Snackbar snackbar;
snackbar = Snackbar.make(v, "ITPANGPANG",Snackbar.LENGTH_LONG)
.setActionTextColor(Color.BLUE).setAction("Hi", new View.OnClickListener()
{
@Override
public void onClick(View v)
{
}
});
View snackView = snackbar.getView();
snackView.setBackgroundColor(Color.parseColor("#FF0000"));
snackbar.show();
}
});
저 스낵바의
View를 구해서
View 백그라운드를
바꿔주시면 됩니다.
이제
마지막으로
위치를 바꾸고싶으시면
xml에서 이렇게
써주시고 원하는곳에
배치하시면 됩니다
<android.support.design.widget.CoordinatorLayout
android:id="@+id/myCoordinatorLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
</android.support.design.widget.CoordinatorLayout>
저 공간에서
나오니까
잘 맞춰서 짜시면 됩니다
음 이게 얼마나
쓰일지는 모르겠지만
아직 뭐 Recyclerview만큼
대세까지는 아닌거 같아서
더 써보고 괜찮다 싶으면
좀 더 연구해서 추가글
써보도록 하겠습니다
'안드로이드(android) > 머티리얼 디자인(Material Design)' 카테고리의 다른 글
EditText의 업글버전?TextInputEditText,TextInputLayout을 써보자 (1) | 2016.06.03 |
---|