英语词典小程序

2023-11-23 04:20
文章标签 程序 英语词典

本文主要是介绍英语词典小程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

#内容简介
英语词典小程序,是通过打开数据库来查询单词,通过openDatabase()方法来实现,另外也可以使用openDatabase()方法来实现实现从res\raw目录复制数据库文件到/sdcard/dictionary目录中,复制数据实际上先读取,再写入数据的过程。把数据库复制到手机内存中,更方便数据的读取。

#效果图
这里写图片描述

##下载地址
http://download.csdn.net/detail/gxseveryday/8804655

#代码

分析:

activity_main.xml中主要定义了一个按钮,作用是查询单词事件处理,定义了一个TextView显示查询的结果,定义了一个AutoCompleteTextView组件,起到显示多个单词的效果。

##UI界面

###activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/mainbg"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context=".MainActivity" ><AutoCompleteTextViewandroid:id="@+id/etWord"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentLeft="true"android:layout_alignParentTop="true"android:layout_marginTop="31dp"android:background="@android:drawable/edit_text"android:ems="10"android:hint="@string/searchHint"android:singleLine="true"android:textColor="#552006"android:textColorHint="#782f10" ></AutoCompleteTextView><Buttonandroid:id="@+id/btnSearch"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignBaseline="@+id/etWord"android:layout_alignBottom="@+id/etWord"android:layout_marginLeft="16dp"android:layout_toRightOf="@+id/etWord"android:background="@drawable/ibsearchword"android:onClick="searchWord"android:text="@string/serachWord" /><TextViewandroid:id="@+id/tvSearchResult"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_alignLeft="@+id/etWord"android:layout_below="@+id/etWord"android:layout_marginTop="22dp"android:textSize="25sp"android:background="@drawable/bg_roundcorner"android:textAppearance="?android:attr/textAppearanceMedium" /></RelativeLayout>

分析:

word_list_item.xml中只是定义了一TextView组件,用来显示查询出来的多个单词

###word_list_item.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/tvWordItem"android:layout_width="fill_parent"android:layout_height="wrap_content"android:gravity="center_vertical"android:minHeight="?android:attr/listPreferredItemHeight"android:paddingLeft="6dip"android:textAppearance="?android:attr/textAppearanceLarge"android:textColor="@color/gray" />

##类和方法

分析:

Dictionary.java调用activity_main.xml布局,进行事件处理,调用适配器,查询所要查询的单词。
###Dictionary.java

package com.bzu.gxs;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import com.bzu.gxs.dao.DictionaryAdapter;
import com.bzu.gxs.db.DBHelper;
import com.bzu.gxs.R;
import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.CursorAdapter;
import android.widget.TextView;
public class Dictionary extends Activity implements OnClickListener,TextWatcher {private DBHelper dbHelper; // 用户输入文本框private AutoCompleteTextView word; // 定义数据库的名字private SQLiteDatabase database;private Button searchWord; // 搜索按钮private TextView showResult; // 用户显示查询结果@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);dbHelper = new DBHelper(getBaseContext());// 打开数据库database = dbHelper.openDatabase();init();searchWord.setOnClickListener(this); // 绑定监听器word.addTextChangedListener(this); // 绑定文字改变监听器}public void init() {searchWord = (Button) findViewById(R.id.btnSearch);word = (AutoCompleteTextView) findViewById(R.id.etWord);showResult= (TextView) findViewById(R.id.tvSearchResult);}public void afterTextChanged(Editable s) {Cursor cursor = database.rawQuery("select english as _id from t_words where english like ?",new String[] { s.toString() + "%" });// 新建新的AdapterDictionaryAdapter dictionaryAdapter = new DictionaryAdapter(this,cursor, true);// 绑定适配器word.setAdapter(dictionaryAdapter);}public void beforeTextChanged(CharSequence s, int start, int count,int after) {}public void onTextChanged(CharSequence s, int start, int before, int count) {}public void onClick(View view) {// 查询指定的单词String sql = "select chinese from t_words where english=?";Cursor cursor = database.rawQuery(sql, new String[] { word.getText().toString() });String result = "查无该词"; // 如果查找单词,显示其中文的意思if (cursor.getCount() > 0) { cursor.moveToFirst(); // 须使用moveToFirst方法将记录指针移动到第1条记录的位置result = cursor.getString(cursor.getColumnIndex("chinese")).replace("&amp;", "&");}showResult.setText(word.getText() + "\n" + result.toString());// 将结果显示到TextView中}}

分析:

DictionaryAdapter.java是自定义的适配器,调用word_list_item.xml布局, 将单词信息显示到列表中,绑定选项到列表中,生成新的选项。
###DictionaryAdapter.java

package com.bzu.gxs.dao;
import android.content.Context;
import android.database.Cursor;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CursorAdapter;
import android.widget.TextView;
import com.bzu.gxs.R;public class DictionaryAdapter extends CursorAdapter {private LayoutInflater layoutInflater;@Overridepublic CharSequence convertToString(Cursor cursor) {return cursor == null ? "" : cursor.getString(cursor.getColumnIndex("_id"));}// 将单词信息显示到列表中private void setView(View view, Cursor cursor) {TextView tvWordItem = (TextView) view;tvWordItem.setText(cursor.getString(cursor.getColumnIndex("_id")));}// 绑定选项到列表中@Overridepublic void bindView(View view, Context context, Cursor cursor) {setView(view, cursor);}// 生成新的选项@Overridepublic View newView(Context context, Cursor cursor, ViewGroup parent) {View view = layoutInflater.inflate(R.layout.word_list_item, null);setView(view, cursor);return view;}public DictionaryAdapter(Context context, Cursor c, boolean autoRequery) {super(context, c, autoRequery);layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);}
}

分析:

DBHelper.java数据库操作类,调用数据库,打开数据库,读取数据库中的数据,关闭数据库。通过InputStream输入流,获得封装dictionary.db文件的InputStream对象。
###DBHelper.java

package com.bzu.gxs.db;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import com.bzu.gxs.R;public class DBHelper {// 定义数据库的存放路径private final String DATABASE_PATH = android.os.Environment.getExternalStorageDirectory().getAbsolutePath() + "/dictionary";private final String DATABASE_FILENAME = "dictionary.db";private Context context;public DBHelper(Context context) {this.context = context;}public SQLiteDatabase openDatabase() {try {// 获得dictionary.db文件的绝对路径String databaseFilename = DATABASE_PATH + "/" + DATABASE_FILENAME;File dir = new File(DATABASE_PATH);// 如果/sdcard/dictionary目录中存在,创建这个目录if (!dir.exists())dir.mkdir();if (!(new File(databaseFilename)).exists()) {// 获得封装dictionary.db文件的InputStream对象InputStream is = context.getResources().openRawResource(R.raw.dictionary);FileOutputStream fos = new FileOutputStream(databaseFilename);byte[] buffer = new byte[8192];int count = 0;// 开始复制dictionary.db文件while ((count = is.read(buffer)) > 0) {fos.write(buffer, 0, count);}// 关闭文件流fos.close();is.close();}// 打开/sdcard/dictionary目录中的dictionary.db文件SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(databaseFilename, null);return database;} catch (Exception e) {}// 如果打开出错,则返回nullreturn null;}}

更多学习资讯,学习源码,请在耶宇星球领取

更多学习资讯,学习源码,请在耶宇星球领取

这篇关于英语词典小程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/415292

相关文章

python编写朋克风格的天气查询程序

《python编写朋克风格的天气查询程序》这篇文章主要为大家详细介绍了一个基于Python的桌面应用程序,使用了tkinter库来创建图形用户界面并通过requests库调用Open-MeteoAPI... 目录工具介绍工具使用说明python脚本内容如何运行脚本工具介绍这个天气查询工具是一个基于 Pyt

Ubuntu设置程序开机自启动的操作步骤

《Ubuntu设置程序开机自启动的操作步骤》在部署程序到边缘端时,我们总希望可以通电即启动我们写好的程序,本篇博客用以记录如何在ubuntu开机执行某条命令或者某个可执行程序,需要的朋友可以参考下... 目录1、概述2、图形界面设置3、设置为Systemd服务1、概述测试环境:Ubuntu22.04 带图

Python程序打包exe,单文件和多文件方式

《Python程序打包exe,单文件和多文件方式》:本文主要介绍Python程序打包exe,单文件和多文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python 脚本打成exe文件安装Pyinstaller准备一个ico图标打包方式一(适用于文件较少的程

Python程序的文件头部声明小结

《Python程序的文件头部声明小结》在Python文件的顶部声明编码通常是必须的,尤其是在处理非ASCII字符时,下面就来介绍一下两种头部文件声明,具有一定的参考价值,感兴趣的可以了解一下... 目录一、# coding=utf-8二、#!/usr/bin/env python三、运行Python程序四、

无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案

《无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案》:本文主要介绍了无法启动此程序,详细内容请阅读本文,希望能对你有所帮助... 在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是"api-ms-win-core-path-l1-1-0.dll丢失

SpringBoot后端实现小程序微信登录功能实现

《SpringBoot后端实现小程序微信登录功能实现》微信小程序登录是开发者通过微信提供的身份验证机制,获取用户唯一标识(openid)和会话密钥(session_key)的过程,这篇文章给大家介绍S... 目录SpringBoot实现微信小程序登录简介SpringBoot后端实现微信登录SpringBoo

uniapp小程序中实现无缝衔接滚动效果代码示例

《uniapp小程序中实现无缝衔接滚动效果代码示例》:本文主要介绍uniapp小程序中实现无缝衔接滚动效果的相关资料,该方法可以实现滚动内容中字的不同的颜色更改,并且可以根据需要进行艺术化更改和自... 组件滚动通知只能实现简单的滚动效果,不能实现滚动内容中的字进行不同颜色的更改,下面实现一个无缝衔接的滚动

Java使用WebView实现桌面程序的技术指南

《Java使用WebView实现桌面程序的技术指南》在现代软件开发中,许多应用需要在桌面程序中嵌入Web页面,例如,你可能需要在Java桌面应用中嵌入一部分Web前端,或者加载一个HTML5界面以增强... 目录1、简述2、WebView 特点3、搭建 WebView 示例3.1 添加 JavaFX 依赖3

防止SpringBoot程序崩溃的几种方式汇总

《防止SpringBoot程序崩溃的几种方式汇总》本文总结了8种防止SpringBoot程序崩溃的方法,包括全局异常处理、try-catch、断路器、资源限制、监控、优雅停机、健康检查和数据库连接池配... 目录1. 全局异常处理2. 使用 try-catch 捕获异常3. 使用断路器4. 设置最大内存和线

使用Python创建一个功能完整的Windows风格计算器程序

《使用Python创建一个功能完整的Windows风格计算器程序》:本文主要介绍如何使用Python和Tkinter创建一个功能完整的Windows风格计算器程序,包括基本运算、高级科学计算(如三... 目录python实现Windows系统计算器程序(含高级功能)1. 使用Tkinter实现基础计算器2.