android browser中长按图片事件

1. 长按事件

 

    public boolean onLongClick(View v) {
        final HitTestResult htr = webview.getHitTestResult();

        if (htr.getType() == WebView.HitTestResult.IMAGE_TYPE) {
            new AlertDialog.Builder(this)
                    .setTitle(htr.getExtra())
                    .setItems(R.array.image_long_click_event,
                            new DialogInterface.OnClickListener() {

                                public void onClick(DialogInterface dialog,
                                        int which) {
                                    if (which == 0) {
                                        // view image
                                        webview.loadUrl(htr.getExtra());
                                    } else if (which == 1) {
                                        // save image
                                        downloadImage(htr.getExtra());
                                    } else if (which == 2) {
                                        // set wallpaper
                                        setWallpaper(htr.getExtra());
                                    }

                                }
                            }).show();
        }
        return false;
    }

其中

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="image_long_click_event">
        <item>View Image</item>
        <item> Save Image</item>
        <item>Save as Wallpaper</item>
    </string-array>
</resources>


    protected void downloadImage(String extra) {
        DownloadManager downloadManager = ((DownloadManager) getSystemService(Activity.DOWNLOAD_SERVICE));
        Request request = new Request(Uri.parse(extra));
        request.setShowRunningNotification(true);
        request.setVisibleInDownloadsUi(true);
        request.setDescription(extra);
        request.setDestinationInExternalPublicDir(
                Environment.DIRECTORY_DOWNLOADS, "allenSample.png");
        downloadManager.enqueue(request);
    }

    protected void setWallpaper(String extra) {
        try {
            Bitmap bitmap = loadImageFromUrl(extra);
            setWallpaper(bitmap);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static Bitmap loadImageFromUrl(String url) {
        InputStream inputStream;
        Bitmap b;
        try {
            inputStream = (InputStream) new URL(url).getContent();
            BitmapFactory.Options bpo = new BitmapFactory.Options();
            bpo.inSampleSize = 2;
            b = BitmapFactory.decodeStream(inputStream, null, bpo);
            return b;
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值