IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 安卓使用WebView加载.svg图片 -> 正文阅读

[移动开发]安卓使用WebView加载.svg图片

SVG(可缩放矢量图形)

????????可缩放矢量图形(Scalable Vector Graphics,SVG)是W3C推出的基于XML的二维矢量图形标准。

与HTML相类似,基于XML的SVG,语法和格式也是结构化的。所谓结构化,也就是文件中的对象通过特定的无素标签定义,任何无素都可以作为对象进行管理,文件是框架式的。掌握基本的文件框架,就可以阅读、编辑和创作自己的文件。

SVG使用一组组的元素标签,创建和组织文件以及文件中的对象。每一个SVG文件都包含最外层的<SVg></SVg>标签。该标签用于声明SVG文件的开始和结束。这等同于HTML文件中的HTML文件声明标签<Html></html>。

SVG主体中的语法和格式定义遵循XML标准,通过各类元素标签和标签对应的属性来描述SVG对象。

SVG对象主要包括图形,路径和文本。

可以将SVG文件嵌入到XML网页或HTML网页执行。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="20dp"
    android:gravity="center_horizontal"
    android:orientation="vertical">

    <WebView
        android:id="@+id/mWebView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />


</LinearLayout>

不用过多解释了吧,布局里面就一个WebView,接下来我们来看下主界面代码?:

package com.example.test.svg

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.example.test.R
import kotlinx.android.synthetic.main.activity_svg.*
import java.io.*


class SvgActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_svg)
        val inputStream: InputStream = read_user("/sdcard/svg/icon_svg_gaojin.svg")
        //8.这个流是字节流,需要我们转换为字符流才可以认识
        val info: String = getTextFromStream(inputStream).toString()
        mWebView.loadData(info, "text/html", "UTF-8")
    }

    @Throws(Exception::class)
    fun read_user(filename: String?): InputStream {
        val file = File(filename)
        val inStream = FileInputStream(file)

        val buffer = ByteArray(1024)
        var len = 0
        val outStream = ByteArrayOutputStream()
        while (inStream.read(buffer).also { len = it } != -1) {
            outStream.write(buffer, 0, len)
        }
        val data: ByteArray = outStream.toByteArray() //得到文件的二进制数据
        val `is`: InputStream = ByteArrayInputStream(data)
        outStream.close()
        inStream.close()
        return `is`
    }


    //字节流转成字符流
    fun getTextFromStream(inputStream: InputStream): String? {
        val b = ByteArray(1024)
        var len: Int
        val bos = ByteArrayOutputStream()
        try {
            while (inputStream.read(b).also { len = it } != -1) {
                bos.write(b, 0, len)
            }
            //把流中的数据转成字节数组的形式,然后用字节数组构造一个字符串
            val bytes = bos.toByteArray()
            bos.close()
            return String(bytes)
        } catch (e: java.lang.Exception) {
            e.printStackTrace()
        }
        return null
    }

}

?我们先把svg图片当文字内容读出来,再转化为String的字符流传给WebView即可

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-07-24 11:36:36  更:2021-07-24 11:38:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/2 3:00:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码