繁体   English   中英

当我单击图像视图时,其他图像也会缩小

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM