-1
pls이 내 문제의 원인입니다.GridView onTouchListener가 예상대로 작동하지 않습니다.
해당 요소에 gridview 및 touchListener가 있습니다. 문제는 내가 배경을 변경하려는 요소를 터치 할 때 및 터치가 완료되면 (동작 위로 또는 ouside) 초기 배경을 표시하는 것입니다. 문제는 요소 위에 두드리고 다른 요소 위로 손가락을 드래그하면 초기 요소가 배경으로 바뀌지 만 손가락을 다른 요소 위로 드래그하고 터치를 끝내면 터치 된 첫 번째 요소의 배경이 바뀌지 않습니다. 초기 배경. 아이디어는 내가 그의 자물쇠를 얻기 위해 gridview에서 elemnt를 만질 때이다.
package com.mines.gui.components;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import com.mines.globals.GlobalVariables;
public class MinesView extends GridView {
private int[] length = new int[81];
private final Bitmap grid0 = Bitmap.createBitmap(GlobalVariables.icons, 0, 88, 50, 50);
private final Bitmap grid1 = Bitmap.createBitmap(GlobalVariables.icons, 50, 88, 50, 50);
private int id;
public MinesView(Context context) {
super(context);
setAdapter(new MineAdapter(context));
setStretchMode(GridView.NO_STRETCH);
setNumColumns(9);
setHorizontalSpacing(40);
}
class MineAdapter extends BaseAdapter {
private Context context;
public MineAdapter(Context context) {
this.context = context;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public int getCount() {
return length.length;
}
public View getView(int position, View convertView, ViewGroup parent) {
final ImageView imageView;
if(convertView == null) {
imageView = new ImageView(context);
imageView.setLayoutParams(new GridView.LayoutParams(40, 40));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
} else {
imageView = (ImageView) convertView;
}
imageView.setBackgroundDrawable(new BitmapDrawable(grid0));
imageView.setId(position);
imageView.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View arg0, MotionEvent arg1) {
switch (arg1.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_POINTER_DOWN:
imageView.setBackgroundDrawable(new BitmapDrawable(grid1));
break;
case MotionEvent.ACTION_OUTSIDE:
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_POINTER_UP:
imageView.setBackgroundDrawable(new BitmapDrawable(grid0));
break;
}
return false;
}
});
imageView.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
// TODO Auto-generated method stub
}
});
return imageView;
}
}
}
은 if 루프에 들어 가지 않습니다. 그리드의 요소를 터치 할 때 뷰가 인식하는지 모르겠다. – moctavianro
안녕하세요 사용자, 업데이트 된 코드보기. –
버튼에서 체크 박스로 슈퍼 클래스를 변경하여 문제를 해결했습니다. 친구들 ... 안드로이드 초보자에게 더 많은 도움이 되십시오. – moctavianro