缩小时,ImageView保持居中

时间:2015-12-16 17:42:38

标签: android image imageview zooming

点击imageView时,我试图让图片全屏显示。

          imageView.setOnClickListener(new View.OnClickListener() {
               @Override
                    public void onClick (View v) {
                    if (isImageFitToScreen) {
                        isImageFitToScreen = false;
                        imageView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
                        imageView.setAdjustViewBounds(true);
                        imageView.setScaleType(ImageView.ScaleType.CENTER);
                    } else {
                        isImageFitToScreen = true;
                        imageView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
                        imageView.setScaleType(ImageView.ScaleType.FIT_XY);
                    }
                }
            });

XML

                <ImageView
                android:layout_gravity="center"
                android:layout_width="214dp"
                android:layout_height="wrap_content"
                android:adjustViewBounds="true"
                android:scaleType="fitXY"
                android:src="@mipmap/no_image"
                android:id="@+id/imageView"
                android:layout_weight="0.19" />

点击imageView之前,imageView位于中心位置。当它点击然后恢复到正常大小时,imageView的大小变小并且移动到左侧。如何使大小保持与正常(放大前)相同并将imageView固定在中心?

2 个答案:

答案 0 :(得分:1)

使用ViewGroup.LayoutParams变量存储imageview的默认LayoutParams,并将其与Imageview clickListener一起使用。

 isImageFitToScreen=false;
    final ViewGroup.LayoutParams layoutParams=imageView.getLayoutParams();

            imageView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (isImageFitToScreen) {
                        isImageFitToScreen = false;
                        imageView.setLayoutParams(layoutParams);
                      } else {
                        isImageFitToScreen = true;
                        imageView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
                         imageView.setScaleType(ImageView.ScaleType.FIT_XY);
                       }
                }
            });

答案 1 :(得分:1)

嗯,首先你需要保存imageview的宽度和高度,然后你需要得到布局或相对布局的宽度和高度或者包含imageview的屏幕大小

* LinearLayout,relativeLayout(容器),你需要放入xml,

以内容为中心

android:layout_gravity="center"

*获取imageview或布局的宽度和高度,请检查此link

1.-获取imageview的大小和容器

2.-展开和缩小imageview,if(validate == true)imageview = sizebig else imageview = sizeshort

注意:如果图像不居中,请检查此link以使图像视图居中,如果图像视图不居中,则尝试将线性布局或相对布局(contariner)的内容集中在一起< / p>