zoukankan      html  css  js  c++  java
  • Android 从服务器下载ttf字体使用

    需求:用户阅读使用可以选择更多的字体,但不希望增加apk的大小

    分析:从后端服务器提供的地址下载使用

    有谷歌提供的可下载字体,未成功实现

    成功实现的:

    1. 后端服务器存放ttf字体文件,提供下载地址

    2. 下载到手机中

    //name:下载后的文件名字。url:字体文件下载地址
    private fun downLoadFont(name : String,url : String){
            Thread {
                val client: OkHttpClient = OkHttpClient.Builder().build()
                var request = Request.Builder()
                        .url(url).get() .build()
                val call = client.newCall(request)
                val response = call.execute()
                //获取下载的内容输入流
                val body = response.body
                val inputStream = body!!.byteStream()
                val lengh = body.contentLength()
                Logger.i("fontsDownload","文件大小:${lengh}")
                //保存文件路径及名字
               var file_name =  "/data/data/${context.packageName}/files/${name}.ttf"
                // 文件保存到本地
                val file = File(name)
                val outputStream = FileOutputStream(file_name)
                var lien = 0
                var losing = 0
                val bytes = ByteArray(1024)
                while (inputStream.read(bytes).also { lien = it } != -1) {
                    outputStream.write(bytes, 0, lien)
                    losing += lien
                    val i = losing.toDouble() / lengh
                    mActivity.runOnUiThread {
                        Logger.i("fragmentMine", "下载进度:${i*100}%")
                    }
                }
                outputStream.flush()
                inputStream.close()
                outputStream.close()
                runOnUiThread {
                    //可更新界面UI操作
                    Logger.i("fragmentMine", "下载完成***********")
                }
            }.start()
        }                    

    3.创建自定义字体文件方法使用

    //fileName 字体文件的保存全地址 /data/data/........name.ttf 
    //textview 文字视图 
    Typeface fontFace = Typeface.createFromFile(fileName);
    textview.setTypeface(fontFace);

    网上这样下载字体使用资料很少,主要是APP对字体需求不大,或者放在font文件放下,可直接使用

    阅读类的APP,为用户提供更多的字体浏览

    做出来发现其实很简单,过程中踩过不少坑,记录保存下来

    /data/data/${context.packageName}/files/${name}.ttf
  • 相关阅读:
    python学习笔记十五-生成器
    python学习笔记十四-迭代器
    python学习笔记十三-装饰器
    The Zen of Python, by Tim Peters
    python学习笔记十二-函数
    python学习笔记十一-集合set
    tensorflow2 gpu 在 win10 上安装过程和问题处理
    anaconda navigator stuck 卡在 loading applications... 处理
    python工具pip加速For windows
    WCF With StructureMap
  • 原文地址:https://www.cnblogs.com/timipaul/p/14801653.html
Copyright © 2011-2022 走看看