如何在Android中加载图片URL以适应我的Webview?

3

我正在开发一个安卓应用程序。在这里,我正在在webview中显示一个url图片。但是这张图片不适合我的webview。有人建议使用viewport的概念。但我无法完美地使用它。我用图示形式附上了我的问题及说明。我使用了

mWebView.getSettings().setUseWideViewPort (true);

但是没有得到好的结果。 我需要在所有分辨率设备上显示适合的图像,包括7英寸、10英寸平板电脑。 请查看附加的图片,并建议我在webview位置中适当地放置url图像的正确方法。我想展示与第三个图表相同的图像。

这是我的加载图像代码:

webView = (WebView) findViewById(R.id.webimage);
        WebSettings webSettings = imageView.getSettings(); 
        webSettings.setLoadsImagesAutomatically(true);
        webSettings.setSupportZoom(true) ;
        webSettings.setBuiltInZoomControls(true);
        webView.setBackgroundColor(Color.TRANSPARENT);
        webView.getSettings().setUseWideViewPort (true);
        webView.getSettings().setLoadWithOverviewMode(true);
        webView.setWebViewClient(new WebViewClient()
        {
        //some dialog implementation
        }
        webView.loadUrl(myurl);

enter image description here


这个 URL 图片是来自 HTML 页面吗?你会操作 HTML 代码吗? - kittu88
你能把你目前使用的代码放上来吗? - Terril Thomas
感谢您的快速回复。我编辑了我的问题,添加了我正在使用的代码来在Webview中加载图像。 - Raghu Mudem
3个回答

2
您可以将标签的width属性设置为100%,并不设置高度属性。
<body >
<img id="resizeImage" src="you_image.png" width="100%" alt="" />
</body>

编辑: 实际上,我也有同样的问题。然而,我还在等待正确的答案。

您可以参考我的问题这里

虽然我通过管理设备的高度和宽度以及使用wv.setInitialScale(185);的技巧来解决了这个问题。默认情况下,缩放将在左上角。

下面是我的代码。

WindowManager mWinMgr;
    public static int displayWidth = 0, displayHeight = 0;

    @Override
    protected void onCreate(Bundle icicle) {
        // TODO Auto-generated method stub
        super.onCreate(icicle);
        // this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
        // this.setProgressBarVisibility(true);
        mWinMgr = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
        displayWidth = mWinMgr.getDefaultDisplay().getWidth();
        displayHeight = mWinMgr.getDefaultDisplay().getHeight();

        setContentView(R.layout.view_my_poops);

        try {
            Map_Type = getIntent().getExtras().getString("MAP_TYPE");
        } catch (Exception e) {

        }
        Log.i(TAG, "MAP TYPE" + Map_Type);

    }

    @SuppressLint("SetJavaScriptEnabled")
    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();

        WebView wv;

        wv = (WebView) findViewById(R.id.webview_MyPoops);
        wv.getSettings().setJavaScriptEnabled(true);
        // this.setProgressBarVisibility(true);
        if (displayWidth >= 552 && displayHeight >= 976 || displayWidth >= 976
                && displayHeight >= 552) {
            wv.setInitialScale(185);
        } else {
            // wv.setInitialScale(150);
        }
        // wv.setInitialScale(30);


        URL = "YOUR_URL";


        Log.i(TAG, "Loading URL" + URL);

        final Activity activity = ViewMyPoop.this;

        wv.setWebChromeClient(new WebChromeClient() {

            public void onProgressChanged(WebView view, int progress) {
                // TODO Auto-generated method stub
                // Log.i(TAG, "Inside OnProgress Changed" + URL);
                activity.setTitle("Loading...");
                activity.setProgress(progress * 100);
                if (progress == 100)
                    activity.setTitle("My title");
            }
        });

        wv.loadUrl(URL);
        wv.setWebViewClient(new WebViewClient());
}

希望这些内容能在IT技术方面对您有所帮助。


谢谢您的回复。我不能编辑HTML源代码。我只是得到了图像链接API调用。 - Raghu Mudem
我需要在所有设备上运行我的应用程序,如平板电脑和笔记本也包括在内。 - Raghu Mudem
是的,它可以在所有设备上运行。你可以试一下。但问题是我们无法在每个设备上完全适配图像。但通过实施它,您可以得到解决问题的90%方案。我也在等待其他高效答案。 - Bhavesh Patadiya
这个答案真的帮了我很多,应该被接受为正确答案。 - jofftiquez

1
您尝试过使用以下代码解决上述问题吗:-
Display display = getWindowManager().getDefaultDisplay();
int width=display.getWidth();

String data="<html><head><title>Example</title><meta name=\"viewport\"\"content=\"width="+width+", initial-scale=0.65 \" /></head>";
data=data+"<body><center><img width=\""+width+"\" src=\""+url+"\" /></center></body></html>";
webView.loadData(data, "text/html", null);

0
你可以尝试这个:
webView.setInitialScale(30);
WebSettings webSettings = webView.getSettings();
webSettings.setUseWideViewPort(true);

参考:链接


但是我无法编辑HTML源代码。我只能获取图像链接API调用,仍然没有得到。 - Raghu Mudem
好的,那就直接使用为WebView设置的代码吧。我猜它会对你有所帮助。忽略HTML部分。 - kittu88
不,我也尝试过那个方法,但我的图片显示的是我附图中的第一个图表。 - Raghu Mudem
在这里添加我的 WebView 代码:<WebView android:layout_centerHorizontal="true" android:layout_toRightOf="@+id/pinch" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginLeft="30dip" android:id="@+id/full_image" android:scrollbarAlwaysDrawVerticalTrack="false"
</WebView>
- Raghu Mudem

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接