Да, это определенно возможно.
Вы могли бы, например, иметь кнопку, и при нажатии кнопки MapFragment/SupportMapFragment будет добавлен к контейнера макета внутри файла макета Activity в.
Внутри метода 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 (...).