在DialogFragment中显示大图片
??ImageFragment?FragmentManager??????????fragment????? PictureUtils?????????????????????????????? ????????????????????????????????
发布日期: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???????
????????????????
????????????Android???????????????
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2026年06月20日 15时21分03秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!