安卓简洁地实现点击ImageView查看大图功能

我是在fragment里面实现查看大图功能,不过放到activity里面也一样
查看大图地功能是由dialog实现

先看看效果
小图状态
大图
实现方式很简单,可以直接复制粘贴

//方法里直接实例化一个imageView不用xml文件,传入bitmap设置图片
    private void bigImageLoader(Bitmap bitmap){
        final Dialog dialog = new Dialog(getActivity());
        ImageView image = new ImageView(getContext());
        image.setImageBitmap(bitmap);
        dialog.setContentView(image);
		//将dialog周围的白块设置为透明
        dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
        //显示
        dialog.show();
        //点击图片取消
        image.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                dialog.cancel();
            }
        });
    }

完整版代码

import android.app.Dialog;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import java.io.IOException;

import okhttp3.Request;


public class page2 extends Fragment {
    private ImageView imageSmall;
    private View view;

    public page2() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        view = inflater.inflate(R.layout.fragment_page2, container, false);
        imageSmall = (ImageView)view.findViewById(R.id.image_small);
        //下面一段代码是自己封装的OkHttp的代码,不是重点,重点是设置小图的bitmap
        String url = "https://img9.51tietu.net/pic/2019-091402/cw0pcs4zbcjcw0pcs4zbcj.jpg";
        OkHttpUtil.loadAsync(url, new OkHttpUtil.DataCallback() {
            @Override public void requestFailure(Request request, Exception e) {}
            @Override public void requestStringSuccess(String result) throws IOException {}
            @Override public void requestBitmapSuccess(Bitmap bitmap) throws IOException {
                imageSmall.setImageBitmap(bitmap);
            }
        });
        imageSmall.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
            //获取ImageView的Bitmap
                bitmap0 = ((BitmapDrawable)imageSmall.getDrawable()).getBitmap();
                bigImageLoader(bitmap0);
            }
        });
        return view;
    }



    private void bigImageLoader(Bitmap bitmap){
        final Dialog dialog = new Dialog(getActivity());
        ImageView image = new ImageView(getContext());
        image.setImageBitmap(bitmap);
        dialog.setContentView(image);
        dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
        dialog.show();
        image.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                dialog.cancel();
            }
        });
    }

}

  • 19
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值