[英]Other images also zoom out when i click the imageview
我正在开发一个捕获图像然后比较图像的应用程序。 在主屏幕或第一个屏幕上,我有一个图像视图,说单击n比较。 当我单击它时,它会打开相机,捕获图片,然后在第二个活动中显示该图像。 在第二个活动中,我总共有四个imageviews和一个用于捕获照片的按钮。 现在,当我单击图像时,它应该放大,当我再次单击时,它应该放大它。 这对于第一张图片效果很好,但是对于其他图片,当我缩小时,它也会同时放大其他图片。 请告诉我我错了。 我已将相机权限放入清单文件中,下面是第二个活动的代码(CompareActivity.java)
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
/ * * * @作者用户* * /
public class CompareActivity extends Activity {
ImageView imv_compare_pic_1, imv_compare_pic_2, imv_compare_pic_3,
imv_compare_pic_4;
Button btn_capture_photo;
int count = 0;
boolean[] pressed = { false, false, false, false };
Animation zoomin, zoomout;
/*
* (non-Javadoc)
*
* @see android.app.Activity#onCreate(android.os.Bundle)
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_compare);
imv_compare_pic_1 = (ImageView) findViewById(R.id.imv_compare_pic_1);
Bitmap bitmap = getIntent().getExtras().getParcelable("image");
imv_compare_pic_1.setImageBitmap(bitmap);
/*
* this variable is to check the number of images that have been placed
* in activity. Since one image has been set, count is incremented to 1
*/
count = 1;
// zoom in and zoom out
zoomin = AnimationUtils.loadAnimation(this, R.anim.zoomin);
zoomin.setFillAfter(true);
zoomout = AnimationUtils.loadAnimation(this, R.anim.zoomout);
imv_compare_pic_1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
/*
* pressed[0] is false because first image hasn't been clicked
* so it will zoom in
*/
if (!pressed[0]) {
imv_compare_pic_1.startAnimation(zoomin);
pressed[0] = !pressed[0];
} else {
// Now pressed[0] is true so it will start zoom out
// animation
imv_compare_pic_1.startAnimation(zoomout);
pressed[0] = !pressed[0];
}
}
});
btn_capture_photo = (Button) findViewById(R.id.btn_capture);
btn_capture_photo.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
open();
}
});
}
public void open() {
Intent intent = new Intent(
android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, 0);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
Bitmap bp = (Bitmap) data.getExtras().get("data");
if (count == 1) {
imv_compare_pic_2 = (ImageView) findViewById(R.id.imv_compare_pic_2);
imv_compare_pic_2.setImageBitmap(bp);
count = 2;
// set zoom in and zoom out on the event of onclick
// imv_compare_pic_2.setAnimation(zoomin);
// imv_compare_pic_2.setAnimation(zoomout);
imv_compare_pic_2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v2) {
// TODO Auto-generated method stub
if (!pressed[1]) {
imv_compare_pic_2.startAnimation(zoomin);
pressed[1] = !pressed[1];
} else {
imv_compare_pic_2.startAnimation(zoomout);
pressed[1] = !pressed[1];
}
}
});
}
else if (count == 2) {
imv_compare_pic_3 = (ImageView) findViewById(R.id.imv_compare_pic_3);
imv_compare_pic_3.setImageBitmap(bp);
count = 3;
// set zoom in and zoom out on the event of onclick
// imv_compare_pic_3.setAnimation(zoomin);
// imv_compare_pic_3.setAnimation(zoomout);
imv_compare_pic_3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v3) {
// TODO Auto-generated method stub
if (!pressed[2]) {
imv_compare_pic_3.startAnimation(zoomin);
pressed[2] = !pressed[2];
} else {
imv_compare_pic_3.startAnimation(zoomout);
pressed[2] = !pressed[2];
}
}
});
} else if (count == 3) {
imv_compare_pic_4 = (ImageView) findViewById(R.id.imv_compare_pic_4);
imv_compare_pic_4.setImageBitmap(bp);
count = 4;
// btn_capture_photo.setVisibility(View.INVISIBLE);
// set zoom in and zoom out on the event of onclick
// imv_compare_pic_4.setAnimation(zoomin);
// imv_compare_pic_4.setAnimation(zoomout);
imv_compare_pic_4.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v4) {
// TODO Auto-generated method stub
if (!pressed[3]) {
imv_compare_pic_4.startAnimation(zoomin);
pressed[3] = !pressed[3];
} else {
imv_compare_pic_4.startAnimation(zoomout);
pressed[3] = !pressed[3];
}
}
});
}
}
}
开始动画后,您将增加计数。
另外,您正在维护的只是一个布尔pressed
状态。
我建议您为布尔值使用数组,因为您需要针对特定的imageview pressed
状态。
就像是:
//in onCreate
boolean[] pressed = {false, false, false, false};
//an example for one imageview
...
else if (count == 2) {
imv_compare_pic_3 = (ImageView) findViewById(R.id.imv_compare_pic_3);
imv_compare_pic_3.setImageBitmap(bp);
count = 3;
// set zoom in and zoom out on the event of onclick
//imv_compare_pic_3.setAnimation(zoomin);
//imv_compare_pic_3.setAnimation(zoomout);
imv_compare_pic_3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v3) {
// TODO Auto-generated method stub
if (!pressed[2]) {
imv_compare_pic_3.startAnimation(zoomin);
pressed[2] = !pressed[2];
} else {
imv_compare_pic_3.startAnimation(zoomout);
pressed[2] = !pressed[2];
}
}
});
}
请重新检查您的计数。 作为其1到4,我建议将其从0更改为3。因此,使用布尔数组索引很容易。
希望这能解决您的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.