Android

android studio 사라지는 프레임

이무쿤 2019. 7. 5. 17:54
반응형

터치가 들어가는 영역을 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에서 선언해서 평소에는 안보이도록 설정.

반응형