Google Maps Android API v2를 사용 중이며 탭 (또는 더블 탭)에서 작은지도 (= 내 SupportMapFragment)를 전체 화면으로 열 수 있기를 원합니다.더블 탭에서 전체 화면 SupportMapFragment 열기
기술적으로 가능합니까? 그렇다면 달성 방법은 무엇입니까?
미리 감사드립니다.
Google Maps Android API v2를 사용 중이며 탭 (또는 더블 탭)에서 작은지도 (= 내 SupportMapFragment)를 전체 화면으로 열 수 있기를 원합니다.더블 탭에서 전체 화면 SupportMapFragment 열기
기술적으로 가능합니까? 그렇다면 달성 방법은 무엇입니까?
미리 감사드립니다.
예 확실히 가능합니다.
당신은 예를 들어 버튼을 가질 수 및 으로 MapFragment/SupportMapFragment이 액티비티의 레이아웃 파일 내부에 컨테이너 레이아웃에 추가됩니다 버튼을 눌러시. 당신이 컨테이너의 레이아웃에 조각을 추가하려면 단추의 OnClick 방법 내부
:YourMapFragment f = new YourMapFragment();
getFragmentManager().beginTransaction().add(R.id.container_layout, f).commit();
이 경우, 나는 "container_layout"이 자리에서로 사용되는 빈 FrameLayout이이라고 추천 액티비티의 레이아웃 파일. 그러면 조각이 나타납니다. 당신이 필요로하는 클래스가 제스처가이 인식 할 수있는 인터페이스가 필요합니다
당신이 정말로 도청을 사용하려는 경우,이 방법은 예를 들어, 더블 탭을 인식 할 수있는 방법입니다
: 당신은 제스처를인터페이스를 해석하는 인터페이스에 콜백을 사용하는 사용자 정의 TouchManager 필요
public interface GestureInterface {
/**
* returns the recognized gesture from the touchmanager
* and enables the user of the interface to react to the gesture (or not)
* @param gesture e.g. TouchManager.SWIPE_LEFT
*/
public void onGestureRecognized(int gesture);
}
TouchManager :
public class TouchManager extends GestureDetector.SimpleOnGestureListener {
public static final int DOWN = 1;
public static final int DOUBLE_TAP = 2;
/** the class that initialized the gesture-recognizer and will be notified upon gestures made by the user */
private GestureInterface caller;
/**
* constructor
* @param the caller that implements the gestureinterface
*/
public TouchManager(GestureInterface caller) {
this.caller = caller;
}
/**
* you need this shit to return true, otherwise gestures wont work
*/
@Override
public boolean onDown(MotionEvent e) {
caller.onGestureRecognized(DOWN);
return true;
}
@Override
public boolean onDoubleTap(MotionEvent e) {
caller.onGestureRecognized(DOUBLE_TAP); // callback
return true;
}
}
그리고 당신의 활동 내부
(또는있는 CustomView하거나 제스처를 인식하여 원하는 목적지) :합니다 (Touchmanager를 호출 활동에 도청이 경우. 당신은 제스처를 인식하여 원하는 목적지public class YourActivity extends Activity implements GestureInterface {
private GestureDetector gd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.yourlayout);
// initialize the touch manager
gd = new GestureDetector(this, new TouchManager(this));
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return gd.onTouchEvent(event);
}
@Override
public void onGestureRecognized(int gesture) {
// react to callbacks
switch (gesture) {
case TouchManager.DOUBLE_TAP:
// do something
YourMapFragment f = new YourMapFragment();
getFragmentManager().beginTransaction().add(R.id.container_layout, f).commit();
break;
}
}
}
, 당신은 GestureDetector.onTouchEvent (...)를 반환합니다.