在DialogFragment中显示大图片
发布日期:2021-04-30 21:04:30 浏览次数:96 分类:精选文章

本文共 3507 字,大约阅读时间需要 11 分钟。

Android?????DisplayFragment??

?Android???????????????????????????????ImageFragment?????????PictureUtils???????????????

????ImageFragment????

????????????????????ImageFragment??fragment???????????????????????????

public class ImageFragment extends DialogFragment {    public static final String EXTRA_IMAGE_PATH = "com.xunbaola.record.image_path";    private ImageView mImageView;    public static ImageFragment newInstance(String imagePath) {        Bundle args = new Bundle();        args.putSerializable(EXTRA_IMAGE_PATH, imagePath);        ImageFragment fragment = new ImageFragment();        fragment.setArguments(args);        fragment.setStyle(DialogFragment.STYLE_NO_TITLE, 0);        return fragment;    }    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        mImageView = new ImageView(getActivity());        String path = getArguments().getString(EXTRA_IMAGE_PATH);        BitmapDrawable image = PictureUtils.getScaledDrawable(getActivity(), path);        mImageView.setImageDrawable(image);        return mImageView;    }    @Override    public void onDestroyView() {        super.onDestroyView();        PictureUtils.cleanImageView(mImageView);    }}

????ImageFragment????

??fragment????setOnClickListener?????????????ImageFragment?????

mPhoto1View.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {        Photo p = mRecord.getPhoto1();        if (p == null) return;        android.support.v4.app.FragmentManager fm = getActivity().getSupportFragmentManager();        String path = getActivity().getFileStreamPath(p.getFilename()).getAbsolutePath();        ImageFragment.newInstance(path).show(fm, DIALOG_IMAGE1);    }});

??PictureUtils????????????

PictureUtils?????????????????????????

public class PictureUtils {    public static BitmapDrawable getScaledDrawable(Activity a, String path) {        Display display = a.getWindowManager().getDefaultDisplay();        float destWidth = display.getWidth();        float destHeight = display.getHeight();        BitmapFactory.Options options = new BitmapFactory.Options();        options.inJustDecodeBounds = true;        BitmapFactory.decodeFile(path, options);        float srcWidth = options.outWidth;        float srcHeight = options.outHeight;        int inSampleSize = 1;        if (srcHeight > destHeight || srcWidth > destWidth) {            if (srcWidth > srcHeight) {                inSampleSize = Math.round(srcHeight / destHeight);            } else {                inSampleSize = Math.round(srcWidth / destWidth);            }        }        options = new BitmapFactory.Options();        options.inSampleSize = inSampleSize;        Bitmap bitmap = BitmapFactory.decodeFile(path, options);        return new BitmapDrawable(a.getResources(), bitmap);    }    public static void cleanImageView(ImageView imageView) {        BitmapDrawable b = imageView.getDrawable() instanceof BitmapDrawable ? ((BitmapDrawable) imageView.getDrawable()) : null;        if (b != null) {            b.getBitmap().recycle();            imageView.setImageDrawable(null);        }    }}

?????????

??ImageFragment?PictureUtils????????????????????ImageFragment??????????PictureUtils?????????????fragment????????ImageFragment???????

????????????????

  • ??ImageFragment?FragmentManager??????????fragment?????
  • PictureUtils??????????????????????????????
  • ????????????????????????????????
  • ????????????Android???????????????

    上一篇:Leetcode--33. 搜索旋转排序数组
    下一篇:【Java4】属性和方法,方法重载,变量分类,可变参数,包

    发表评论

    最新留言

    网站不错 人气很旺了 加油
    [***.192.178.218]2026年06月20日 15时21分03秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章