터치가 들어가는 영역을 id로 잡아서
Activity에서 가져옴. panel이 나와있는 상태에서 한번더 터치할 때 사라지고
다른 영역이 터치될 때도 사라지도록 함.
버터나이프 쓸 때
ButterKnife.bind(this); 넣는거 잊지말기.
@BindView(R.id.out)
FrameLayout out;
@BindView(R.id.picture)
LinearLayout map;
@OnClick({R.id.out})
public void OnClick(View v){ //View 형식의 매개변수를 받는 이유는 모든 형을 커버함. Linear,Frame 형에 따라 각각 //안 만들어줘도됨.
if(v.equals(map)){
showPanel(!misShow); //만약 영역이 터치 되었다면 showPanel 함수를 호출하는데 인자는 반대의 경우로 넣어줌
}
}
boolean misShow = false ;
public void showPanel (boolean Show){
map.setVisibility(View.VISIBLE); //영역이 터치가 되면 우선 화면을 띄움.
if(Show){
misShow=true; //현재 화면이 띄워져 있으므로 true로 변환.
float distance= TypedValue.applyDimension( //만약 Show가 트루인경우 즉, 터치가 화면이 없던 상태에서 눌린 경우는
TypedValue.COMPLEX_UNIT_DIP,0, //유지 해야 하므로 TypedValue.COMPLEX_UNIT_DIP,0으로 //applyDimension을 해줌 수직길이를 0으로 만든단 소리임.
getResources().getDisplayMetrics()
);
map.animate().translationY(distance).setDuration(700); //화면을 7초 동안 이동 시키는데 0만큼 이동시키니 7초동안 안 //움직이는 것 처럼 보임 함수가 끝나면 다시 GONE됨.(사라짐)
}else{
misShow=false;
float distance= TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,200, //Show가 false인경우는 화면이 띄워진 상태에서 눌린것이므로 내려 //가야됨 거리값을 layout의 height값으로 줌.
getResources().getDisplayMetrics()
);
map.animate().translationY(distance).setDuration(700); // 7초동안 height만큼 움직임. 함수 끝나면 마찬가지로 GONE
}
android:visibility="gone" //layout에서 선언해서 평소에는 안보이도록 설정.
'Android' 카테고리의 다른 글
Android studio 딜레이 생성. (0) | 2019.07.10 |
---|---|
Android studio text를 String객체로 빼오기. (0) | 2019.07.09 |
android studio v7 에러 해결. (0) | 2019.07.05 |
Android studio intent 화면전환 (0) | 2019.07.04 |
Android studio 클릭이벤트 (0) | 2019.07.04 |