1
我正在嘗試進行字母檢查。我有一個ImageView11
,它顯示你必須猜測的隨機字母表。 imageView_alphabet_image_1
和imageView_alphabet_image_2
將顯示我必須猜測的兩個選項,並且我會將ImageView11
圖像拖動到顯示正確的ImageView
上。但我能做到這一點只有第一次當我刷新點擊它總是顯示不正確敬酒無法進行拖放
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/btn_refresh"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Refresh"/>
<LinearLayout
android:id="@+id/dragLinearLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:orientation="horizontal" >
<ImageView
android:id="@+id/imgView_des"
android:layout_width="70dp"
android:layout_height="80dp"
android:src="@drawable/ic_launcher" />
</LinearLayout>
<LinearLayout
android:id="@+id/bottomLinearLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="150dp"
android:orientation="horizontal"
android:weightSum="1" >
<ImageView
android:id="@+id/imgView_alphabetImage_1"
android:layout_width="70dp"
android:layout_height="80dp"
android:layout_weight="0.25"
android:src="@drawable/a" />
<ImageView
android:id="@+id/imgView_alphabetImage_2"
android:layout_width="70dp"
android:layout_height="80dp"
android:layout_weight="0.25"
android:src="@drawable/a" />
</LinearLayout>
package com.example.cleardoubt;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.util.Log;
import android.view.DragEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.DragShadowBuilder;
import android.view.View.OnClickListener;
import android.view.View.OnDragListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
public class MainActivity extends ActionBarActivity implements OnClickListener,
\t \t OnTouchListener, OnDragListener {
\t private ImageView _imgView_des;
\t private ImageView _imgView_alphabetImage_1;
\t private ArrayList<Integer> _alphabet_arrayList;
\t private Button _btn_refresh;
\t private ImageView _imgView_alphabetImage_2;
\t private ArrayList<Integer> _tempArrayList;
\t private ArrayList<Integer> _finalTempArrayList;
\t @Override
\t protected void onCreate(Bundle savedInstanceState) {
\t \t super.onCreate(savedInstanceState);
\t \t initView();
\t \t setContentView(R.layout.activity_main);
\t \t _imgView_des = (ImageView) findViewById(R.id.imgView_des);
\t \t _imgView_des.setOnClickListener(this);
\t \t _imgView_des.setOnTouchListener(this);
\t \t _imgView_des.setOnDragListener(this);
\t \t _imgView_alphabetImage_1 = (ImageView) findViewById(R.id.imgView_alphabetImage_1);
\t \t _imgView_alphabetImage_1.setOnClickListener(this);
\t \t _imgView_alphabetImage_1.setOnDragListener(this);
\t \t _imgView_alphabetImage_2 = (ImageView) findViewById(R.id.imgView_alphabetImage_2);
\t \t _imgView_alphabetImage_2.setOnClickListener(this);
\t \t _imgView_alphabetImage_2.setOnDragListener(this);
\t \t _btn_refresh = (Button) findViewById(R.id.btn_refresh);
\t \t _btn_refresh.setOnClickListener(this);
\t }
\t private void initView() {
\t \t _alphabet_arrayList = new ArrayList<Integer>();
\t \t _alphabet_arrayList.add(R.drawable.a);
\t \t _alphabet_arrayList.add(R.drawable.b);
\t \t _alphabet_arrayList.add(R.drawable.c);
\t \t _alphabet_arrayList.add(R.drawable.d);
\t \t _alphabet_arrayList.add(R.drawable.e);
\t \t _alphabet_arrayList.add(R.drawable.f); \t
\t \t _alphabet_arrayList.add(R.drawable.g); \t
\t \t
\t \t _tempArrayList = new ArrayList<Integer>();
\t \t _finalTempArrayList = new ArrayList<Integer>();
\t \t
\t }
\t @Override
\t public boolean onCreateOptionsMenu(Menu menu) {
\t \t // Inflate the menu; this adds items to the action bar if it is present.
\t \t getMenuInflater().inflate(R.menu.main, menu);
\t \t return true;
\t }
\t @Override
\t public boolean onOptionsItemSelected(MenuItem item) {
\t \t int id = item.getItemId();
\t \t if (id == R.id.action_settings) {
\t \t \t return true;
\t \t }
\t \t return super.onOptionsItemSelected(item);
\t }
\t @Override
\t public void onClick(View v) {
\t \t switch (v.getId()) {
\t \t case R.id.imgView_des:
\t \t \t break;
\t \t case R.id.imgView_alphabetImage_1:
\t \t \t if (_imgView_des
\t \t \t \t \t .getDrawable()
\t \t \t \t \t .getConstantState()
\t \t \t \t \t .equals(_imgView_alphabetImage_1.getDrawable()
\t \t \t \t \t \t \t .getConstantState())) {
\t \t \t \t Toast.makeText(this, "matched", Toast.LENGTH_SHORT).show();
\t \t \t } else {
\t \t \t \t Toast.makeText(this, "not matched", Toast.LENGTH_SHORT).show();
\t \t \t }
\t \t \t break;
\t \t case R.id.imgView_alphabetImage_2:
\t \t \t if (_imgView_des
\t \t \t \t \t .getDrawable()
\t \t \t \t \t .getConstantState()
\t \t \t \t \t .equals(_imgView_alphabetImage_2.getDrawable()
\t \t \t \t \t \t \t .getConstantState())) {
\t \t \t \t Toast.makeText(this, "matched", Toast.LENGTH_SHORT).show();
\t \t \t } else {
\t \t \t \t Toast.makeText(this, "not matched", Toast.LENGTH_SHORT).show();
\t \t \t }
\t \t \t
\t \t \t break;
\t \t \t
\t \t case R.id.btn_refresh:
\t \t \t
\t \t \t Random random = new Random();
\t \t \t int index = random.nextInt(7);
\t \t \t _imgView_des.setImageResource(_alphabet_arrayList.get(index));
\t \t \t _imgView_des.setVisibility(View.VISIBLE);
\t \t \t _tempArrayList = (ArrayList<Integer>) _alphabet_arrayList.clone();
\t \t \t _tempArrayList.remove(index);
\t \t \t Collections.shuffle(_tempArrayList, random);
\t \t \t for (int j = 0; j < 1; j++) {
\t \t \t \t _finalTempArrayList.add(_tempArrayList.get(j));
\t \t \t }
\t \t \t _finalTempArrayList.add(_alphabet_arrayList.get(index));
\t \t \t Collections.shuffle(_finalTempArrayList);
\t \t \t Log.e(" _finalTempArrayList after suffel", _finalTempArrayList.toString());
\t \t \t _imgView_alphabetImage_1.setImageResource(_finalTempArrayList.get(0));
\t \t \t _imgView_alphabetImage_2.setImageResource(_finalTempArrayList.get(1));
\t \t \t _finalTempArrayList.clear();
\t \t \t break;
\t \t \t
\t \t default:
\t \t \t break;
\t \t }
\t }
\t @Override
\t public boolean onTouch(View v, MotionEvent e) {
\t \t if (e.getAction() == MotionEvent.ACTION_DOWN) {
\t \t \t // ClipData clipData = ClipData.newPlainText("", "");
\t \t \t DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(v);
\t \t \t v.startDrag(null, shadowBuilder, v, 0);
\t \t \t v.setVisibility(View.INVISIBLE);
\t \t \t return true;
\t \t } else {
\t \t \t return false;
\t \t }
\t }
\t @Override
\t public boolean onDrag(View v, DragEvent e) {
\t \t switch (e.getAction()) {
\t \t case DragEvent.ACTION_DRAG_STARTED:
\t \t \t // if (e.getClipDescription().hasMimeType(
\t \t \t // ClipDescription.MIMETYPE_TEXT_PLAIN)) {
\t \t \t // return true;
\t \t \t // } else {
\t \t \t // Toast.makeText(this, "can not accept the image",
\t \t \t // Toast.LENGTH_SHORT).show();
\t \t \t //
\t \t \t // }
\t \t \t // return false;
\t \t \t break;
\t \t case DragEvent.ACTION_DROP:
\t \t \t if (_imgView_des
\t \t \t \t \t .getDrawable()
\t \t \t \t \t .getConstantState()
\t \t \t \t \t .equals(_imgView_alphabetImage_1.getDrawable()
\t \t \t \t \t \t \t .getConstantState())) {
\t \t \t \t ViewGroup viewGroup = (ViewGroup) v.getParent();
\t \t \t \t viewGroup.removeView(_imgView_des);
\t \t \t \t v.setBackground(this.getResources().getDrawable(R.drawable.a));
\t \t \t \t return true;
\t \t \t \t
\t \t \t }
\t \t \t else if(_imgView_des
\t \t \t \t \t .getDrawable()
\t \t \t \t \t .getConstantState()
\t \t \t \t \t .equals(_imgView_alphabetImage_2.getDrawable()
\t \t \t \t \t \t \t .getConstantState()))
\t \t \t {
\t \t \t \t ViewGroup viewGroup = (ViewGroup) v.getParent();
\t \t \t \t viewGroup.removeView(_imgView_des);
\t \t \t \t v.setBackground(this.getResources().getDrawable(R.drawable.a));
\t \t \t \t return true; \t
\t \t \t }
// \t \t \t else {
// \t \t \t \t return false;
// \t \t \t }
\t \t
\t \t \t break;
\t \t \t
\t \t \t
\t \t case DragEvent.ACTION_DRAG_ENDED:
\t \t \t Log.v("a", e.getResult() + "");
\t \t \t if (e.getResult()) {
\t \t \t \t _imgView_des.setVisibility(View.INVISIBLE);
\t \t \t \t Log.v("asddd", e.getResult() + "");
\t \t \t \t Toast.makeText(this, " accept the image",
\t \t \t \t \t Toast.LENGTH_SHORT).show();
\t \t \t \t return true;
\t \t \t } else {
\t \t \t \t _imgView_des.setVisibility(View.VISIBLE);
\t \t \t \t Toast toast = new Toast(this);
\t \t \t ImageView view = new ImageView(this);
\t \t \t view.setImageResource(R.drawable.unsuccess);
\t \t \t toast.setView(view);
\t \t \t toast.show();
\t \t \t return true;
\t \t \t }
\t \t
\t \t default:
\t \t \t break;
\t \t }
\t \t return false;
\t }
}
書面方式真也接受了錯誤的字母圖像後,以及在顯示敬酒兩次 – 2015-04-06 11:22:32
@Ashutoshsingh - 你只檢查的ImageView的繪製。沒有計算拖動的imageview的位置。所以如果你通過_imgView_alphabetImage_1拖動圖片,那麼它將檢查兩個imageview。所以你需要檢查第一個用戶在哪個圖像視圖上拖動圖像。 – 2015-04-06 11:29:00
你可以幫我pllzzzz .....怎麼做? – 2015-04-07 07:50:30