2016-10-20 98 views
0

我改變主意了關於使用swipemotions:由於這是相當複雜的使用swipemotions,我決定只使用與「大」和「小」使用多一個ArrayList,如果條件

我簡單的按鈕目前正在Android Studio的一個學校項目中工作,到目前爲止,我已經編寫了一個生成隨機等式的代碼。 這裏是一個gereates隨機方程的代碼:

String[] operationSet = new String[]{"+", "-", "/", "*"}; 
String stringResultOfEquation; 
String equation; 
double doubleAnswer1; 
public void start1() { 
    Random random = new Random(); 
    int numOfOperations = random.nextInt(2) + 1; 

    List<String> operations = new ArrayList<>(); 

    for (int i = 0; i < numOfOperations; i++) { 
     String operation = operationSet[random.nextInt(4)]; 
     operations.add(operation); 
    } 

    int numOfNumbers = numOfOperations + 1; 
    List<Integer> numbers = new ArrayList<>(); 

    for (int i = 0; i < numOfNumbers; i++) { 
     int number = random.nextInt(10)+1; 
     numbers.add(number); 
    } 

    String equation = ""; 
    for (int i = 0; i < numOfOperations; i++) { 
     equation += numbers.get(i); 
     equation += operations.get(i); 
    } 
    equation += numbers.get(numbers.size() -1); 

    TextView TextEquation = (TextView)findViewById(R.id.textView3); 
    TextEquation.setText(equation); 

    String stringResultOfEquation = String.valueOf(equation); 

    double doubleAnswer1 = eval(stringResultOfEquation); 

    String stringAnswer = Double.toString(doubleAnswer1); 

    TextView textAnswer = (TextView)findViewById(R.id.textView4); 
    textAnswer.setText(stringAnswer); 
} 

現在該應用在屏幕上顯示兩個方程,並且用戶隨後必須dicide閹羊第二方程具有比第一個更大或更小的結果。如果第二個公式更大,用戶必須執行一次swipemotion,如果第二個公式較小,用戶必須執行向下swipemotion。 但是我不知道如何爲此編寫代碼。我試過這個:

if((doubleAnswer1 > doubleAnswer2) && (MotionEvent.ACTION_DOWN = true)){ 
    //create new equation 
    } 

但是沒有奏效。它告訴我說,「運營商& &不能適用於布爾值,INT」

現在我很好奇,如果我可以用這樣一個ArrayList:

if(doubleAnswer1 > doubleAnswer2){ 
     // put "smaller" to arraylist 
    } else { 
     // put "bigger" to arraylist 
    } 

    if(MotionEvent.ACTION_DOWN = true){ 
     // put "smaller" to arraylist 
    } 
    if(MotionEvent.ACTION_UP = true){ 
     // put "bigger" to arraylist 
    } 

然後代碼會檢查該ArrayList如果陣列列表的元素是相同的。如果是這樣,則將生成下一個等式。如果arraylist的元素不同,則該過程將被停止。 我真的不知道這是否會起作用,所以有人可能會告訴我是否可以? 或者還有其他方法可以解決我的問題嗎?

如果有什麼是我的問題不清楚,請隨時問,我會試圖澄清這一問題:)

感謝您事先已經對你有所幫助!

+1

警告...'如果(MotionEvent.ACTION_UP =真){'是不是一個布爾比較 –

+0

它應該是:event.getAction()== KeyEvent.ACTION_UP –

+1

我相信你問如何檢測滑動事件? –

回答

0

「=」是一個賦值, 用於比較值使用「==」。

關於識別手勢,請https://developer.android.com/training/gestures/detector.html#detecthttps://developer.android.com/reference/android/view/GestureDetector.html

你需要的東西是這樣的:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    ... 
    mDetector = new GestureDetectorCompat(this,this); 
    ... 
} 

@Override 
public boolean onFling(MotionEvent event1, MotionEvent event2, float velocityX, float velocityY) { 
    Log.d(TAG, "fling! - direction is " + (velocityY > 0 ? "down" : "up")); 
    return true; 
} 
+0

永遠不會寫'someBoolean == true' – Henry

+0

我現在可以使用它來檢測swipemotion嗎?如果是這樣,我怎麼能檢測到它,然後例如對於一個swipemotion向上,它把「更大」的arraylist? – zutru

+0

創建GestureDetectorCompat時,您將手勢的偵聽器作爲參數傳遞(在我的示例中,它是「this」,您需要擴展GestureDetector.OnGestureListener),只要用戶向上或向下滑動手指,就會調用onFling,可以使用velocityY來確定投擲方向。 – marmor

1

當你寫這樣的陳述編輯會告訴你(Android的工作室希望如此),你可以不將int與布爾值進行比較。因爲它傾向於零意味着虛假和1意味着真實,但在java中你不能這樣做。

你可以嘗試這樣的

@Override 
public boolean onTouch(View v, MotionEvent event) { 


    if (event.getAction() == MotionEvent.ACTION_DOWN) 
    { 


     return false; 
    } 

    return false; 
} 

希望將有助於理解......