簡體   English   中英

如何分享全屏圖片android?

[英]How to share full screen image android?

我通過從服務器獲取來在視圖尋呼機中顯示圖像。我沒有顯示全屏圖像。我添加了通過電子郵件或許多其他選項共享圖像的功能。

用於共享圖像的代碼

imageView = (TouchImageView) viewpager.findViewWithTag(viewpager
            .getCurrentItem());
    imageView.setDrawingCacheEnabled(true);
    Bitmap bitmap = imageView.getDrawingCache();
    String path = Images.Media.insertImage(getContentResolver(), bitmap,
            "description", null);
    uri = Uri.parse(path);
    Intent send_report = new Intent(Intent.ACTION_SEND);
    send_report.putExtra(Intent.EXTRA_EMAIL, new String[] { "" });
    send_report.putExtra(Intent.EXTRA_SUBJECT, "Give Me That Picture");
    send_report.putExtra(Intent.EXTRA_STREAM, uri);
    send_report.putExtra(Intent.EXTRA_TEXT, "cool picture");
    send_report.setType("text/plain");
    send_report.setType("image/png");
    startActivityForResult(
    Intent.createChooser(send_report, "Choose an Email client"), 77);

但共享的圖像不是全屏圖像。但我想分享實際尺寸的圖像。請幫我解決這個問題。

UPDATE 視圖尋呼機適配器

public class ImagePagerAdapter extends PagerAdapter {
        LayoutInflater inflater;
        PhotoViewAttacher attacher;
        PhotoViewAttacher pic;

        private DisplayImageOptions options;
        private List<Wallpaper> IMAGES_LIST = AppController.getInstance()
                .getPrefManger().getAllImages();




        public ImagePagerAdapter(Context context) {
            inflater = LayoutInflater.from(context);
            options = new DisplayImageOptions.Builder()
                    .showImageForEmptyUri(R.drawable.ic_empty)
                    .showImageOnFail(R.drawable.ic_error)
                    .resetViewBeforeLoading(true).cacheOnDisk(true)
                    .imageScaleType(ImageScaleType.EXACTLY)
                    .bitmapConfig(Bitmap.Config.RGB_565)
                    .considerExifParams(true)
                    .displayer(new FadeInBitmapDisplayer(300)).build();
        }

        @Override
        public Object instantiateItem(ViewGroup container, final int position) {
            final View imageLayout = inflater.inflate(
                    R.layout.item_pager_image, container, false);
            assert imageLayout != null;
            pos = position;
            imageView = (TouchImageView) imageLayout.findViewById(R.id.image);
            // pic=new PhotoViewAttacher(imageView);
            imageView.setTag(position);

            imageView.setOnDoubleTapListener(new OnDoubleTapListener() {

                @Override
                public boolean onSingleTapConfirmed(MotionEvent e) {
                    // TODO Auto-generated method stub
                    Log.i("hello", "sinfle");
                    mHandler.removeCallbacks(r);
                    share.setVisibility(View.VISIBLE);
                    done.setVisibility(View.VISIBLE);
                    gimmy.setVisibility(View.VISIBLE);
                    comment.setVisibility(View.VISIBLE);
                    mHandler.postDelayed(r, 5 * 1000);
                    return false;
                }

                @Override
                public boolean onDoubleTapEvent(MotionEvent e) {
                    // TODO Auto-generated method stub
                    Log.i("hello", "donl");

                    return false;
                }

                @Override
                public boolean onDoubleTap(MotionEvent e) {
                    // TODO Auto-generated method stub
                    return false;
                }
            });

            share.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    showShareDialog();
                }

            });

            final ProgressBar spinner = (ProgressBar) imageLayout
                    .findViewById(R.id.loading);

            ImageLoader.getInstance().displayImage(
                    IMAGES_LIST.get(position).getUrl(), imageView, options,
                    new SimpleImageLoadingListener() {
                        @Override
                        public void onLoadingStarted(String imageUri, View view) {
                            spinner.setVisibility(View.VISIBLE);
                            view.setVisibility(View.GONE);
                        }

                        @Override
                        public void onLoadingFailed(String imageUri, View view,
                                FailReason failReason) {
                            String message = null;
                            switch (failReason.getType()) {
                            case IO_ERROR:
                                message = "Input/Output error";
                                break;
                            case DECODING_ERROR:
                                message = "Image can't be decoded";
                                break;
                            case NETWORK_DENIED:
                                message = "Downloads are denied";
                                break;
                            case OUT_OF_MEMORY:
                                message = "Out Of Memory error";
                                break;
                            case UNKNOWN:
                                message = "Unknown error";
                                break;
                            }
                            Toast.makeText(view.getContext(), message,
                                    Toast.LENGTH_SHORT).show();

                            spinner.setVisibility(View.GONE);
                        }

                        @Override
                        public void onLoadingComplete(String imageUri,
                                View view, Bitmap loadedImage) {
                            spinner.setVisibility(View.GONE);
                            view.setVisibility(View.VISIBLE);


                        }
                    });

            container.addView(imageLayout, 0);
            return imageLayout;
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView((View) object);
        }

        @Override
        public int getCount() {
            return IMAGES_LIST.size();
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view.equals(object);
        }

        @Override
        public void restoreState(Parcelable state, ClassLoader loader) {
        }

        @Override
        public Parcelable saveState() {
            return null;
        }

    }

您已經設置了cacheOnDisk(true) ,所以現在您要通過以下方式從中獲取圖像:

File cachedImage = imageLoader.getDiscCache().get(imageUrl);
if (cachedImage.exists()) {
    /// get your image from file
}

如果您在視圖尋呼機中獲取當前圖像的緩存,那么您將獲得帶有邊距的視圖尋呼機上顯示的視圖。您需要從服務器下載圖像。在視圖尋呼機中獲取當前顯示圖像的URL並下載來自服務器的圖像。這將解決您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM