मैं एंड्रॉयड में इशारा गतिविधि पर काम कर रहा हूँ मैं कड़ी चोट कार्रवाई का पता लगाने के वर्ग में प्रयोग किया जाता हैएंड्रॉयड onDown बिना LinearLayout पर कड़ी चोट इशारा जोड़ने के बारे में सच
public class ActivitySwipeDetector implements View.OnTouchListener {
static final String logTag = "ActivitySwipeDetector";
private Activity activity;
static final int MIN_DISTANCE = 100;
private float downX, downY, upX, upY;
public ActivitySwipeDetector(Activity activity){
this.activity = activity;
}
public void onRightToLeftSwipe(){
Log.i(logTag, "RightToLeftSwipe!");
Toast.makeText(activity, "RightToLeftSwipe", Toast.LENGTH_SHORT).show();
//activity.doSomething();
}
public void onLeftToRightSwipe(){
Log.i(logTag, "LeftToRightSwipe!");
Toast.makeText(activity, "LeftToRightSwipe", Toast.LENGTH_SHORT).show();
//activity.doSomething();
}
public void onTopToBottomSwipe(){
Log.i(logTag, "onTopToBottomSwipe!");
//Toast.makeText(activity, "onTopToBottomSwipe", Toast.LENGTH_SHORT).show();
//activity.doSomething();
}
public void onBottomToTopSwipe(){
Log.i(logTag, "onBottomToTopSwipe!");
//Toast.makeText(activity, "onBottomToTopSwipe", Toast.LENGTH_SHORT).show();
//activity.doSomething();
}
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()){
case MotionEvent.ACTION_DOWN: {
downX = event.getX();
downY = event.getY();
return true;
}
case MotionEvent.ACTION_UP: {
upX = event.getX();
upY = event.getY();
float deltaX = downX - upX;
float deltaY = downY - upY;
// swipe horizontal?
if(Math.abs(deltaX) > MIN_DISTANCE){
// left or right
if(deltaX < 0) { this.onLeftToRightSwipe(); return true; }
if(deltaX > 0) { this.onRightToLeftSwipe(); return true; }
}
else {
Log.i(logTag, "Swipe was only " + Math.abs(deltaX) + " long, need at least " + MIN_DISTANCE);
return false; // We don't consume the event
}
// swipe vertical?
if(Math.abs(deltaY) > MIN_DISTANCE){
// top or down
if(deltaY < 0) { this.onTopToBottomSwipe(); return true; }
if(deltaY > 0) { this.onBottomToTopSwipe(); return true; }
}
else {
Log.i(logTag, "Swipe was only " + Math.abs(deltaX) + " long, need at least " + MIN_DISTANCE);
return false; // We don't consume the event
}
return true;
}
}
return false;
}
}
मेरी xml फ़ाइल
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/action_settings"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
</LinearLayout>
है और मेरे गतिविधि में मैं इस
ActivitySwipeDetector activitySwipeDetector = new ActivitySwipeDetector(this);
LinearLayout lowestLayout = (LinearLayout)this.findViewById(R.id.action_settings);
lowestLayout.setOnTouchListener(activitySwipeDetector);
मैं ActivitySwipeDetector(this);
तो इसका ठीक काम कर रहा बुलाया भरा एक साथ की तरह बुला ctivity। लेकिन मैं पूरी गतिविधि के लिए केवल LinearLayout पर स्वाइप डिटेक्टर को कैसे लागू कर सकता हूं। कृपया मेरी मदद करें।
आप किसी विशेष दृश्य के लिए टच श्रोता को जोड़ रहे हैं। तय करें कि आप किस दृश्य को स्वाइप का पता लगाना चाहते हैं, और इसे उस उचित दृश्य से संलग्न करें। यदि आप इसे यहां की गतिविधि में शीर्ष स्तर के दृश्य में संलग्न करते हैं, तो यह पूरी गतिविधि पर काम करेगा। –
लेकिन अगर मैं बच्चे के दृश्य को संलग्न करता हूं तो यह काम नहीं करता है ... –