2014-01-08 2 views
1

Я разрабатываю приложение Android для блокировки Android. Но теперь я застрял. В основном у меня есть целая куча кнопок на экране, и мне нужно зарегистрироваться, когда они перетаскивают палец с одной кнопки на другую и в каком порядке.Android Lock Screen App Наведение и последовательность

Как я могу это сделать?

Я пытаюсь использовать метод MotionEvent.ACTION_MOVE в методе OnTouch, но он не работает. (Он работает только для кнопки 1, так как я печатаю для регистрации идентификатора кнопки, которая зависнет, но она не будет печатать для любой другой кнопки, кроме кнопки 1)

Просьба сообщить, как я могу это сделать ?

ответ

0

я сделать это один раз, вы должны получить все позиции просматривать (х и у с yourButton.getLeft() и yourButton.getTop(), но будьте осторожны, потому что вы можете получить после макета СОЗДАНИЯ не использовать это в onCreate()), то в onTouch() методе вы имеете id вашей кнопки, в методе onTouch() вы можете получить положение пальца с me.getX(), me.getY(), но это значение имеет родственник с первым видом, поэтому у вас должно быть что-то связанное с этим.

int rightXPos = yourButton.getLeft()+ me.getX() // yourButton is Button that 
int rightYPos = yourButton.getTop()+ me.getY() // Toached firstTime 

использовать журнал для ловли me.getX(), me.getY() вы понимаете себя.

затем проверить rightXPos и rightYPos с вашим списком позиции, то вы можете обнаружить кнопку ведьма прикоснулся

Я надеюсь, что это полезно для вас

Редактировать

это образец код, который делает это, попробуйте это.

MainActivity.class

package activity; 

import java.util.ArrayList; 

import shayan.pourvatan.lowandhigh.R; 
import android.animation.ArgbEvaluator; 
import android.animation.ValueAnimator; 
import android.animation.ValueAnimator.AnimatorUpdateListener; 
import android.graphics.Color; 
import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.View.OnTouchListener; 
import android.widget.TextView; 
import farsiConverter.FarsiDigit; 

public class MainActivity extends FragmentActivity implements OnClickListener , OnTouchListener { 

    ArrayList<Integer> _clickedPos; 
    ArrayList<Integer> _leftDestanceLine , _topDestanceLine; 
    TextView tv1 , tv2 , tv3 , tv4 , tv5 , tv6 , tv7 , tv8 , tv9; 
    TextView line1 , line2 , line3 , line4 , line5 , line6 , line7, line8; 
    TextView titleEn , titleFa; 


    boolean _firstTime; 
    int _count; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.splashscreen); 

     _clickedPos = new ArrayList<Integer>(); 
     _leftDestanceLine = new ArrayList<Integer>(); 
     _topDestanceLine = new ArrayList<Integer>(); 


     InitializeTextView(); 
     InitilizeLine(); 

     // detector = new GestureDetector(this,this); 

     DefaultBackground(); 
     _count = 0; 
     _firstTime = true; 
    } 


    private void InitilizeLine() { 

     line1 = (TextView) findViewById(R.id.textView21); 
     line2 = (TextView) findViewById(R.id.textView22); 
     line3 = (TextView) findViewById(R.id.textView23); 
     line4 = (TextView) findViewById(R.id.textView24); 
     line5 = (TextView) findViewById(R.id.textView25); 
     line6 = (TextView) findViewById(R.id.textView26); 
     line7 = (TextView) findViewById(R.id.textView27); 
     line8 = (TextView) findViewById(R.id.textView28); 





    } 

    private void InitializeTextView() { 

     tv1 = (TextView) findViewById(R.id.textView41); 
     tv2 = (TextView) findViewById(R.id.textView42); 
     tv3 = (TextView) findViewById(R.id.textView43); 
     tv4 = (TextView) findViewById(R.id.textView44); 
     tv5 = (TextView) findViewById(R.id.textView45); 
     tv6 = (TextView) findViewById(R.id.textView46); 
     tv7 = (TextView) findViewById(R.id.textView47); 
     tv8 = (TextView) findViewById(R.id.textView48); 
     tv9 = (TextView) findViewById(R.id.textView49); 


     titleEn = (TextView) findViewById(R.id.TitleEn); 
     titleFa = (TextView) findViewById(R.id.TitleFa); 

     tv1.setTag(1); 
     tv2.setTag(2); 
     tv3.setTag(3); 
     tv4.setTag(4); 
     tv5.setTag(5); 
     tv6.setTag(6); 
     tv7.setTag(7); 
     tv8.setTag(8); 
     tv9.setTag(9); 

     View main = findViewById(R.id.RelativeLayout1); 

     tv1.setOnClickListener(this); 
     tv2.setOnClickListener(this); 
     tv3.setOnClickListener(this); 
     tv4.setOnClickListener(this); 
     tv5.setOnClickListener(this); 
     tv6.setOnClickListener(this); 
     tv7.setOnClickListener(this); 
     tv8.setOnClickListener(this); 
     tv9.setOnClickListener(this); 

     tv1.setOnTouchListener(this); 
     tv2.setOnTouchListener(this); 
     tv3.setOnTouchListener(this); 
     tv4.setOnTouchListener(this); 
     tv5.setOnTouchListener(this); 
     tv6.setOnTouchListener(this); 
     tv7.setOnTouchListener(this); 
     tv8.setOnTouchListener(this); 
     tv9.setOnTouchListener(this); 
     main.setOnTouchListener(this); 

    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 


    private void ChangingBackGround(int colorFrom , int colorTo, final View v) { 

     ValueAnimator colorAnimation = ValueAnimator.ofObject(new ArgbEvaluator(), colorFrom, colorTo); 
     colorAnimation.addUpdateListener(new AnimatorUpdateListener() { 

      @Override 
      public void onAnimationUpdate(ValueAnimator animator) { 
       v.setBackgroundColor((Integer)animator.getAnimatedValue()); 
      } 

     }); 
     colorAnimation.start(); 

    } 

    @Override 
    protected void onResume() { 
     overridePendingTransition(0,0); 
     super.onResume(); 
    } 

    private void DefaultBackground() { 
     tv1.setBackgroundColor(Color.parseColor("#000000")); 
     tv3.setBackgroundColor(Color.parseColor("#000000")); 
     tv5.setBackgroundColor(Color.parseColor("#000000")); 
     tv7.setBackgroundColor(Color.parseColor("#000000")); 
     tv9.setBackgroundColor(Color.parseColor("#000000")); 
     tv2.setBackgroundColor(Color.parseColor("#ffffff")); 
     tv4.setBackgroundColor(Color.parseColor("#ffffff")); 
     tv6.setBackgroundColor(Color.parseColor("#ffffff")); 
     tv8.setBackgroundColor(Color.parseColor("#ffffff")); 

    } 

    private View GetViewPos(int _tempPos) { 

     switch (_tempPos) { 
     case 1: return tv1; 
     case 2: return tv2; 
     case 3: return tv3; 
     case 4: return tv4; 
     case 5: return tv5; 
     case 6: return tv6; 
     case 7: return tv7; 
     case 8: return tv8; 
     case 9: return tv9; 

     default: 
      break; 
     } 
     return null; 
    } 

    private int CheckPosition(float X, float Y) { 
      int pos = -1; 
      pos = Position1checked(X , Y); 
      pos = Position2checked(X , Y , pos); 
      pos = Position3checked(X , Y, pos); 
      pos = Position4checked(X , Y, pos); 
      pos = Position5checked(X , Y, pos); 
      pos = Position6checked(X , Y, pos); 
      pos = Position7checked(X , Y, pos); 
      pos = Position8checked(X , Y, pos); 
      pos = Position9checked(X , Y, pos); 

      return pos; 
     } 

     private int Position9checked(float x, float y, int pos) { 

      if (pos > -1) 
       return pos; 
      else 
       if (x > _leftDestanceLine.get(2) && x < _leftDestanceLine.get(3) && 
         y > _topDestanceLine.get(2) && y < _topDestanceLine.get(3)) 
        return 5; 


      return -1; 
     } 

     private int Position8checked(float x, float y, int pos) { 

      if (pos > -1) 
       return pos; 
      else 
       if (x > _leftDestanceLine.get(1) && x < _leftDestanceLine.get(2) && 
         y > _topDestanceLine.get(2) && y < _topDestanceLine.get(3)) 
        return 6; 
      return -1; 
     } 

     private int Position7checked(float x, float y, int pos) { 

      if (pos > -1) 
       return pos; 
      else 
       if (x > _leftDestanceLine.get(0) && x < _leftDestanceLine.get(1) && 
         y > _topDestanceLine.get(2) && y < _topDestanceLine.get(3)) 
        return 7; 

      return -1; 
     } 

     private int Position6checked(float x, float y, int pos) { 

      if (pos > -1) 
       return pos; 
      else 
       if (x > _leftDestanceLine.get(2) && x < _leftDestanceLine.get(3) && 
         y > _topDestanceLine.get(1) && y < _topDestanceLine.get(2)) 
        return 4; 

      return -1; 
     } 

     private int Position5checked(float x, float y, int pos) { 


      if (pos > -1) 
       return pos; 
      else 
       if (x > _leftDestanceLine.get(1) && x < _leftDestanceLine.get(2) && 
         y > _topDestanceLine.get(1) && y < _topDestanceLine.get(2)) 
        return 9; 


      return -1; 
     } 

     private int Position4checked(float x, float y, int pos) { 


      if (pos > -1) 
       return pos; 
      else 
       if (x > _leftDestanceLine.get(0) && x < _leftDestanceLine.get(1) && 
         y > _topDestanceLine.get(1) && y < _topDestanceLine.get(2)) 
        return 8; 

      return -1; 
     } 

     private int Position3checked(float x, float y, int pos) { 

      if (pos > -1) 
       return pos; 
      else 
       if (x > _leftDestanceLine.get(2) && x < _leftDestanceLine.get(3) && 
         y > _topDestanceLine.get(0) && y < _topDestanceLine.get(1)) 
        return 3; 

      return -1; 
     } 

     private int Position2checked(float x, float y, int pos) { 

      if (pos > -1) 
       return pos; 
      else 
       if (x > _leftDestanceLine.get(1) && x < _leftDestanceLine.get(2) && 
         y > _topDestanceLine.get(0) && y < _topDestanceLine.get(1)) 
        return 2; 


      return -1; 
     } 

     private int Position1checked(float x, float y) { 
      if (x > _leftDestanceLine.get(0) && x < _leftDestanceLine.get(1) && 
        y > _topDestanceLine.get(0) && y < _topDestanceLine.get(1)) 
       return 1; 

      return -1; 
     } 
     private void FillArrayPos() { 

       _leftDestanceLine.add(line1.getLeft()); 
       _leftDestanceLine.add(line5.getLeft()); 
       _leftDestanceLine.add(line6.getLeft()); 
       _leftDestanceLine.add(line3.getLeft()); 

       _topDestanceLine.add(line2.getTop()); 
       _topDestanceLine.add(line7.getTop()); 
       _topDestanceLine.add(line8.getTop()); 
       _topDestanceLine.add(line4.getTop()); 

       for (int i = 0 ; i < 4 ; i++) 
       { 
        Log.d(""+_leftDestanceLine.get(i),""+_topDestanceLine.get(i)); 
       } 
       _firstTime = false; 

     } 


     @Override 
     public boolean onTouch(View v, MotionEvent me) { 
      if (_firstTime) 
        FillArrayPos(); 

      if (me.getActionMasked() == MotionEvent.ACTION_UP) 
      { 
       Log.d("in action up", "123"); 
       // CheckEquality(_count); 
       // if _count == 1 then user just 
      } 

       int _tempPos = CheckPosition(me.getX()+v.getLeft() , me.getY()+v.getTop()); 

       if (_clickedPos.size() > 0) 
       { 
        if (_tempPos == -1){} 
        else if (_tempPos == _clickedPos.get(_clickedPos.size()-1)){ 
         //change the background of current position 
         } 
        else 
        { 
         _count++; 
         View v1 = GetViewPos(_tempPos); 
         ChangingBackGround(Color.parseColor("#ffffff") , Color.parseColor("#ffa500") , v1); 
         _clickedPos.add(_tempPos); 
        } 

       } 
       else 
       { 
        if (_tempPos == -1){} 
        else 
        { 
         _count++; 
         View v1 = GetViewPos(_tempPos); 
         ChangingBackGround(Color.parseColor("#ffffff") , Color.parseColor("#ffa500") , v1); 
         _clickedPos.add(_tempPos); 
        } 
       } 
       return true; 
     } 

} 

splash.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/RelativeLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#000" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/TitleEn" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@+id/TitleFa" 
     android:layout_below="@+id/TitleFa" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:textColor="#fff" 
     android:textSize="18sp" /> 

    <TextView 
     android:id="@+id/TitleFa" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="39dp" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:textColor="#ffa500" 
     android:textSize="40sp" /> 

    <TextView 
     android:id="@+id/textView17" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:background="#000" /> 

    <TextView 
     android:id="@+id/textView25" 
     android:layout_width="2dp" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/textView24" 
     android:layout_alignTop="@+id/textView22" 
     android:layout_marginRight="45dp" 
     android:layout_toLeftOf="@+id/textView17" 
     android:background="#000" /> 

    <TextView 
     android:id="@+id/textView21" 
     android:layout_width="2dp" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/textView24" 
     android:layout_alignTop="@+id/textView22" 
     android:layout_marginRight="90dp" 
     android:layout_toLeftOf="@+id/textView25" 
     android:background="#000" /> 

    <TextView 
     android:id="@+id/textView26" 
     android:layout_width="2dp" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/textView24" 
     android:layout_alignTop="@+id/textView22" 
     android:layout_marginLeft="45dp" 
     android:layout_toRightOf="@+id/textView17" 
     android:background="#000" /> 

    <TextView 
     android:id="@+id/textView23" 
     android:layout_width="2dp" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/textView24" 
     android:layout_alignTop="@+id/textView22" 
     android:layout_marginLeft="90dp" 
     android:layout_toRightOf="@+id/textView26" 
     android:background="#000" /> 

    <TextView 
     android:id="@+id/textView24" 
     android:layout_width="wrap_content" 
     android:layout_height="2dp" 
     android:layout_above="@+id/textView17" 
     android:layout_alignLeft="@+id/textView21" 
     android:layout_alignRight="@+id/textView23" 
     android:layout_marginBottom="5dp" 
     android:background="#000" /> 

    <TextView 
     android:id="@+id/textView28" 
     android:layout_width="wrap_content" 
     android:layout_height="2dp" 
     android:layout_above="@+id/textView24" 
     android:layout_alignLeft="@+id/textView24" 
     android:layout_alignRight="@+id/textView23" 
     android:layout_marginBottom="90dp" 
     android:background="#000" /> 

    <TextView 
     android:id="@+id/textView27" 
     android:layout_width="wrap_content" 
     android:layout_height="2dp" 
     android:layout_above="@+id/textView28" 
     android:layout_alignLeft="@+id/textView28" 
     android:layout_alignRight="@+id/textView23" 
     android:layout_marginBottom="90dp" 
     android:background="#000" /> 

    <TextView 
     android:id="@+id/textView22" 
     android:layout_width="wrap_content" 
     android:layout_height="2dp" 
     android:layout_above="@+id/textView27" 
     android:layout_alignLeft="@+id/textView21" 
     android:layout_alignRight="@+id/textView23" 
     android:layout_marginBottom="90dp" 
     android:background="#000" /> 

    <TextView 
     android:id="@+id/textView41" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/textView27" 
     android:layout_alignLeft="@+id/textView22" 
     android:layout_alignRight="@+id/textView25" 
     android:layout_alignTop="@+id/textView25" 
     android:layout_marginBottom="2dp" 
     android:layout_marginLeft="2dp" 
     android:layout_marginRight="2dp" 
     android:layout_marginTop="2dp" 
     android:layout_toLeftOf="@+id/textView25" 
     android:background="#000" 
     android:gravity="center" 
     android:text="1" 
     android:textColor="#fff" 
     android:textSize="50sp" /> 

    <TextView 
     android:id="@+id/textView43" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/textView27" 
     android:layout_alignLeft="@+id/textView26" 
     android:layout_alignRight="@+id/textView23" 
     android:layout_alignTop="@+id/textView23" 
     android:layout_marginBottom="2dp" 
     android:layout_marginLeft="2dp" 
     android:layout_marginRight="2dp" 
     android:layout_marginTop="2dp" 
     android:background="#000" 
     android:gravity="center" 
     android:text="3" 
     android:textColor="#fff" 
     android:textSize="50sp" /> 

    <TextView 
     android:id="@+id/textView47" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/textView21" 
     android:layout_alignLeft="@+id/textView28" 
     android:layout_alignRight="@+id/textView41" 
     android:layout_alignTop="@+id/textView45" 
     android:layout_marginBottom="2dp" 
     android:layout_marginLeft="2dp" 
     android:background="#000" 
     android:gravity="center" 
     android:text="7" 
     android:textColor="#fff" 
     android:textSize="50sp" /> 

    <TextView 
     android:id="@+id/textView45" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/textView26" 
     android:layout_alignLeft="@+id/textView43" 
     android:layout_alignRight="@+id/textView28" 
     android:layout_alignTop="@+id/textView28" 
     android:layout_marginBottom="2dp" 
     android:layout_marginRight="2dp" 
     android:layout_marginTop="2dp" 
     android:background="#000" 
     android:gravity="center" 
     android:text="9" 
     android:textColor="#fff" 
     android:textSize="50sp" /> 

    <TextView 
     android:id="@+id/textView42" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/textView27" 
     android:layout_alignTop="@+id/textView41" 
     android:layout_toLeftOf="@+id/textView43" 
     android:layout_toRightOf="@+id/textView41" 
     android:background="#fff" 
     android:gravity="center" 
     android:text="2" 
     android:textColor="#000" 
     android:textSize="50sp" /> 

    <TextView 
     android:id="@+id/textView48" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/textView28" 
     android:layout_alignLeft="@+id/textView41" 
     android:layout_alignRight="@+id/textView41" 
     android:layout_below="@+id/textView41" 
     android:background="#fff" 
     android:gravity="center" 
     android:text="4" 
     android:textColor="#000" 
     android:textSize="50sp" /> 

    <TextView 
     android:id="@+id/textView49" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/textView48" 
     android:layout_alignRight="@+id/textView42" 
     android:layout_below="@+id/textView41" 
     android:layout_toRightOf="@+id/textView41" 
     android:background="#000" 
     android:gravity="center" 
     android:text="5" 
     android:textColor="#fff" 
     android:textSize="50sp" /> 

    <TextView 
     android:id="@+id/textView44" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignBottom="@+id/textView49" 
     android:layout_alignLeft="@+id/textView43" 
     android:layout_alignRight="@+id/textView43" 
     android:layout_alignTop="@+id/textView49" 
     android:background="#fff" 
     android:gravity="center" 
     android:text="6" 
     android:textColor="#000" 
     android:textSize="50sp" /> 

    <TextView 
     android:id="@+id/textView46" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/textView24" 
     android:layout_alignLeft="@+id/textView49" 
     android:layout_alignRight="@+id/textView49" 
     android:layout_alignTop="@+id/textView47" 
     android:background="#fff" 
     android:gravity="center" 
     android:text="8" 
     android:textColor="#000" 
     android:textSize="50sp" /> 

</RelativeLayout>