Android在活动中打开一个地图


前言

Android 写一个地图界面
👀效果图在这里插入图片描述

在一个活动中,进活动一瞬间打开一个网页版地图(不用自己写浏览器), 地图可缩放,可以拖动,可以找位置,可以反查坐标,大家可以在此基础上再嵌入好玩的功能


提示:以下是本篇文章正文内容,下面案例可供参考,代码注释多

一、不用浏览器可以?

不用担心,Android 早就已经考虑到了这种需求,并提供了一个 WebView 控件,借助它我们就可以在自己的应用程序里嵌入一个浏览器,从而非常轻松地展示各种各样的网页

二、步骤

1.新建一个空白活动

在这里插入图片描述
然后会自动生成一个布局文件,按图找到Webview拖入
起名 android:id="@+id/map"
在这里插入图片描述

2.写入代码

1.MyWev_view .Activity主要的代码

package com.example.secure_majia;//这是我的项目名称

import android.annotation.SuppressLint;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;

import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.snackbar.Snackbar;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import android.view.MotionEvent;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
//以上都是包

public class MyWev_view extends AppCompatActivity {
    private WebView temp_webView;
    @SuppressLint("SetJavaScriptEnabled")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my_wev_view);
        initWebView();

        temp_webView.loadUrl("http://api.map.baidu.com/lbsapi/getpoint/index.html");//你想要访问什么网页你就写什么

    }

    //初始化浏览器
    @SuppressLint("SetJavaScriptEnabled")
    private void initWebView() {
        temp_webView = (WebView) findViewById(R.id.map);
        WebSettings webSettings = temp_webView.getSettings();

        temp_webView.setVerticalScrollBarEnabled(false);
        webSettings.setJavaScriptEnabled(true); // 设置支持javascript脚本

        webSettings.setJavaScriptCanOpenWindowsAutomatically(true);

        webSettings.setUseWideViewPort(true);//关键点

        webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);

        webSettings.setDisplayZoomControls(false);


        webSettings.setAllowFileAccess(true); // 允许访问文件
        //设置JS支持
        //webSettings.setJavaScriptEnabled(true);
        //设置支持缩放变焦
        webSettings.setBuiltInZoomControls(false);
        //支持屏幕缩放
        webSettings.setSupportZoom(true);
        webSettings.setBuiltInZoomControls(true);
        //设置是否允许JS打开新窗口
        webSettings.setJavaScriptCanOpenWindowsAutomatically(true);

        // 修复一些机型webview无法点击
        temp_webView.requestFocus(View.FOCUS_DOWN);

        temp_webView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                if(url.startsWith("http:") || url.startsWith("https:") ) {
                    view.loadUrl(url);
                    return false;
                }else{
                    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                    startActivity(intent);
                    return true;
                }
            }
        });

        temp_webView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String
                    url) {
                view.loadUrl(url); // 根据传入的参数再去加载新的网页
                return true; // 表示当前WebView可以处理打开新网页的请求,不用借助系统浏览器
            }
        });
    }
}

2.修改AndroidManifest.xml代码
🤳一点要插入这一句话,这是用于支持网络的,不然不能上网

    <uses-permission android:name="android.permission.INTERNET" />
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.example.secure_majia">

    <uses-permission android:name="android.permission.INTERNET" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/icon"  //app图标
        android:label="xxx"      //这是app名字
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.AppCompat.DayNight.NoActionBar"
        android:usesCleartextTraffic="true"
        tools:targetApi="m">

        <activity//注册该活动
            android:name=".MyWev_view"
            android:label="@string/title_activity_my_wev_view"
            android:theme="@style/Theme.MaterialComponents.DayNight.NoActionBar" />
            
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

结尾

至此基本大功告成了
在这个案例中我只写了两个页面,一个MainActivity和web页面,对于第一个页面自动跳转感兴趣的同学可以看我的另外一篇文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值