鸿蒙应用:在线电子词典练习部分分享 原创

鸿蒙时代
发布于 2020-12-23 15:25
浏览
1收藏

前期部分效果图

鸿蒙应用:在线电子词典练习部分分享-鸿蒙开发者社区

 代码如下:

<?xml version="1.0" encoding="utf-8"?>
<DirectionalLayout
    xmlns:ohos="http://schemas.huawei.com/res/ohos"
    ohos:height="match_parent"
    ohos:width="match_parent"
    ohos:orientation="vertical">

  <DirectionalLayout
        ohos:height="match_parent"
        ohos:width="match_parent"
        ohos:left_margin="200vp"
        ohos:right_margin="200vp"
        ohos:top_margin="20vp"
        ohos:orientation="vertical">

        <DirectionalLayout
            ohos:height="50vp"
            ohos:width="match_parent"
            ohos:orientation="horizontal">

            <TextField
                ohos:id="$+id:jltftextfield_word"
                ohos:height="match_content"
                ohos:width="match_parent"
                ohos:hint="请输入要查询的单词"
                ohos:background_element="$graphic:border"
                ohos:weight="1"
                ohos:padding="4vp"
                ohos:text_size="30"/>
             <Button
                 ohos:id="$+id:jltfbutton_search"
                 ohos:height="30vp"
                 ohos:width="100vp"
                 ohos:text="搜索"
                 ohos:scale_mode="zoom_center"/>
        </DirectionalLayout>

    <Text
        ohos:id="$+id:jltftext_search_result"
        ohos:height="200vp"
        ohos:width="match_parent"
        ohos:multiple_lines="true"
        ohos:visibility="hide"
        ohos:top_margin="10vp"
        ohos:text_alignment="left|top"
        ohos:text_size="20vp"
       />
     <Image
         ohos:id="$+id:jltfimage"
         ohos:weight="1"
         ohos:height="match_parent"
         ohos:width="match_parent"
         ohos:image_src="$media:index3"
         ohos:scale_mode="zoom_center"/>
  </DirectionalLayout>
</DirectionalLayout>

提取本地词库

代码如下:

新建一个包一个类(电子词典类)

package com.example.jltfzidian.common;

import ohos.app.AbilityContext;
import ohos.global.resource.Resource;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.Paths;

public class jltfmydict {
    private AbilityContext context;
    private File jltfdictpath;
    private  File jltfdbpath;
    public   jltfmydict(AbilityContext context){
        this.context = context;
        jltfdictpath = new File(context.getDatabaseDir().toString() +
                "/MainAbility/databases/db");
        if (!jltfdictpath.exists()){
            jltfdictpath.mkdirs();
        }
        jltfdbpath = new
                File(Paths.get(jltfdbpath.toString(),"edictshujuku.sql").toString());
    }
    private void jltfextractdb() throws IOException{
        //读取edictshujuku.sql文件的字节流
        Resource resource =
                context.getResourceManager().getRawFileEntry("resoutces/rawfile/edictshujuku.sql").openRawFile();
        if (jltfdbpath.exists()){
            jltfdbpath.delete();
        }
        FileOutputStream jltffos = new FileOutputStream(jltfdbpath);
        byte[] jltfbuffer = new byte[4096];
        int count = 0;
        while ((count = resource.read(jltfbuffer))>= 0){
            jltffos.write(jltfbuffer,0,count);
        }
        resource.close();
        jltffos.close();
    }
    public void init() throws  IOException{
        jltfextractdb();
    }
}

MainAbilitySlice中 添加如下代码


    mydict = new jltfmydict(this);
    try {
        mydict.init();
    }catch (IOException e){
        terminateAbility();
    }
}

本练习参考了李宁老师公开的代码与课程。

 

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
分类
收藏 1
回复
举报
回复
    相关推荐