2017-02-02 4 views
0

В деятельности с использованиемandroid: как я могу обнаружить, когда пользователь коснулся левой половины области обзора?

public boolean dispatchTouchEvent(MotionEvent ev)

, как я могу знать, пользователь прикасается влево Y-ось 20% площади края?

Должно быть общим и ориентированным. Я не хочу создавать скрытый вид. спасибо.

+1

Получите x и y касания и сравните с 20% экранов x и y. –

+0

@DayDayHappy вы можете показать некоторый цвет в этой конкретной области, чтобы очистить оставшиеся 20% области обзора? –

ответ

1
  • Получить устройство Ширина
  • Рассчитать осталось 20% размера ширины (от 0 до X)
  • Использование event.getX()
  • Убедитесь, что event.getX() находится внутри устройства с 20%

enter image description here

пример:

public class YourActivity extends Activity { 

     private LinearLayout background; 
     private float xValue, yValue, leftPersentage; 
     private int height,width; 


     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_home); 

      DisplayMetrics displaymetrics = new DisplayMetrics(); 
      getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
      height = displaymetrics.heightPixels; 
      width = displaymetrics.widthPixels; 

      leftPersentage = (width)*20/100; 

      background = (LinearLayout) findViewById(R.id.background); 
      background.setOnTouchListener(new View.OnTouchListener() { 
       @Override 
       public boolean onTouch(View v, MotionEvent event) { 
        xValue = event.getX(); 
        yValue = event.getY(); 
        Log.d("Values Clicked" , xValue +"and" + yValue); 
        if(xValue <= leftPersentage){ 
         // perform your task 
         Log.d("Values Clicked onLeft" , xValue +"and" + yValue); 
        } 

        return false; 
       } 
      }); 
     } 
    } 
+1

замечательный ответ. ты читаешь мои мысли. большое спасибо – DayDayHappy

+0

@DayDayHappy рад, что я могу помочь :)) –

1

Получите размер дисплея, затем получите точку от события касания. Сравните его математически, чтобы узнать, осталось ли его 20% или нет.

получить размер дисплея

DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();  
float dpHeight = displayMetrics.heightPixels/displayMetrics.density; 
float dpWidth = displayMetrics.widthPixels/displayMetrics.density; 

получить точки соприкосновения.

@Override 
public boolean dispatchTouchEvent(MotionEvent ev) { 
    float touchedX = ev.getX(); 
    float touchedY = ev.getY(); 
    return super.dispatchTouchEvent(ev); 
}