Android开发用webView加载长图

时间:2022-10-31 09:14:44

需求是要加载一张存放在项目里的长图,支持缩放,第一反应想到的最容易的办法就是webview了,上代码

布局就是web 没啥说的

 
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".ui.activity.android.WorldCupGame.WorldCupGameActivity">

    <WebView
        android:id="@+id/web"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>


然后是问的设置支持手势缩放,不显示控制器

 
package com.yblt.hct.ui.activity.android.WorldCupGame;

import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;

import com.yblt.hct.R;
import com.yblt.hct.ui.activity.BaseActivity;

import butterknife.BindView;
import butterknife.ButterKnife;

public class WorldCupGameActivity extends BaseActivity {

    @BindView(R.id.web)
    WebView webView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_world_cup_game);
    }

    @Override
    public void initView() {
        ButterKnife.bind(this);
        webView.getSettings().setSupportZoom(true);//缩放
        webView.getSettings().setBuiltInZoomControls(true);
        webView.getSettings().setDisplayZoomControls(false);//不显示控制器
        webView.getSettings().setUseWideViewPort(true);
        webView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
        webView.getSettings().setLoadWithOverviewMode(true);
        webView.loadUrl("file:///android_res/mipmap/worldcup.png");
    }

}

 
setLoadWithOverviewMode方法设置自适应屏幕,

效果


Android开发用webView加载长图