我有一个带有图像的布局,我希望当我点击它们时,它们会在屏幕上显示特定的消息。我的问题是,当我点击布局中的任何imageview时,我只得到我为第一个设置的消息。这是我的代码,你能告诉我问题是什么: earlir我在singletap的方法中尝试了这段代码: int id = 0 case 0:id = R.id.imageView1 但这不起作用请帮助
gestureDetector = new GestureDetector(this, new GestureDetector.SimpleOnGestureListener() {
public boolean onSingleTapConfirmed(MotionEvent e){
Toast.makeText(Creaacount_5.this, "single tap", Toast.LENGTH_SHORT).show();
EditText b=(EditText)findViewById(R.id.editText1);
b.append("*");
int id=0;
ImageView i=(ImageView) findViewById(R.id.imageView1);
id=i.getId();
int id1;
ImageView b1=(ImageView) findViewById(R.id.imageView2);
id1=b1.getId();
int id2;
ImageView c=(ImageView) findViewById(R.id.imageView2);
id2=c.getId();
int v=i.getId();
if(id==R.id.imageView1){
EditText t1 = (EditText)findViewById(R.id.editText1);
id=R.drawable.playing;
SpannableString ss = new SpannableString("abc");
ImageView r=(ImageView) findViewById(R.id.imageView1);
Drawable d = r.getDrawable();
d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
ImageSpan span = new ImageSpan(d, ImageSpan.ALIGN_BASELINE);
ss.setSpan(span, 0, 3, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
t1.append(ss);
id=R.drawable.playing;
Toast.makeText(Creaacount_5.this,"play",Toast.LENGTH_SHORT).show();
SharedPreferences s1=getSharedPreferences(MyPreferences,MODE_PRIVATE);
SharedPreferences.Editor editor1=s1.edit();
editor1.putInt("play", R.drawable.playing);
}
答案 0 :(得分:0)
您可以为每个图像使用这个简单的监听器,而不是做太多的事情:
ImageView img = (ImageView) findViewById(R.id.myImageId);
img.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// your code here
}
});
另外,你可以使用android:onClick =" MyMethod"在XML中的每个图像视图中,然后在Java中创建一个方法:
public void MyMethod(View view){
if(view.getId()==image1)
// do something with that image
else if(view.getId()==image2)
// do something with that image
.
.
.
}
答案 1 :(得分:0)
以下是您如何尝试以上内容,只是概述:
boolean firstTouch = false;
@Override
public boolean onTouchEvent(MotionEvent event) {
if(event.getAction() == event.ACTION_DOWN){
if(firstTouch && (Helper.getCurrentTimeInMilliSeconds() - time) <= 300) {
//do stuff here for double tap
Log.e("** DOUBLE TAP**"," second tap ");
firstTouch = false;
} else {
firstTouch = true;
time = Helper.getCurrentTimeInMilliSeconds();
Log.e("** SINGLE TAP**"," First Tap time "+time);
return false;
}
}
return true;
}
如果有帮助,请告诉我。