- 浏览: 203455 次
- 性别:
- 来自: 芜湖
文章分类
- 全部博客 (139)
- 软件 (0)
- Pattern (6)
- CSDN导入 (19)
- Struts (3)
- [网站分类]1.网站首页原创 (27)
- [网站分类]6.转载区 (4)
- Hibernate (10)
- Error (8)
- [网站分类]2.Java新手区 (20)
- Java (8)
- [网站分类]4.其他技术区 (10)
- Web (1)
- C++ (2)
- Algorithm (4)
- Linux (2)
- Skill (1)
- Tech (2)
- Note (2)
- [网站分类]3.非技术区 (1)
- Database (1)
- Winty (7)
- [网站分类]1.网站首页原创Java技术区(对首页文章的要求: 原创、高质量、经过认真思考并精心写作。BlogJava管理团队会对首页的文章进行管理。) (0)
最新评论
-
haohao-xuexi02:
很不错哦。
O'Reilly cos上传组件的使用(1/3) - 上传文件 -
yoin528:
useUnicode=true&charact ...
[原]向MySQL数据库插入Blob数据的问题 -
xiaoqing20:
下载来看看!呵呵
[原]Struts2类型转换 -
xiaoqing20:
[原]Struts2类型转换
手机姓名秀 - NameShow
在手机上展示你的姓名。
[背景]:
1、如果你的名字是生僻字,没法组成常见词,别人问起,你得解释半天,最终还是要拿笔写出来别人才明白。
2、当你想向别人展示个性签名时,拿出纸质签名就太土了,也不方便。
3、当你需要展示名片时,纸质名片没有带,手机总带了吧?NameShow就派上用场了。
[说明]:
1、用WinRAR打开NameShow.jar,
用自己制作的姓名图片替换原有up.png、left.png、down.png、right.png。
原图片大小是128x160,根据自己的手机屏幕大小提供相应大小的图片。
替换完成后,把NameShow.jar安装到手机即可运行。
2、上下左右导航键各对应一张图片。
3、如果姓名是三个字:up.png对应全名,left.png对应姓,
down.png对应名的第一个字,right.png对应名的第二个字;
如果是姓名是二个字:则down.png可以省略。
4、本程序在CLDC1.0,MIDP2.0环境编译,Nokia S40的Java环境成功运行。
[问题]
Q:自己制作图片太麻烦,为什么不能在程序中输入姓名并保存,每次打开显示上次输入的姓名?
A:普通手机没有超大字体,要想显示个性画且超大的全屏字,只能用图片。
Q:我的手机不是智能机,可以用吗?
A:支持Java的手机都可以使用。
Q:直接在手机上显示图片不是更方便?
A:有的手机全屏显示图片时并不优雅,如果用NameShow将更方便切换姓与名的显示。
NameShowMIDlet.java:
import java.io.IOException;
import java.io.InputStream;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
/**
* 手机姓名秀 - NameShow
*
* [背景]:
* 1、如果你的名字是生僻字,没法组成常见词,别人问起,你得解释半天,最终还是要拿笔写出来别人才明白。
* 2、当你想向别人展示个性签名时,拿出纸质签名就太土了,也不方便。
* 3、当你需要展示名片时,纸质名片没有带,手机总带了吧?NameShow就派上用场了。
*
* [说明]:
* 1、用WinRAR打开NameShow.jar,
* 用自己制作的姓名图片替换原有up.png、left.png、down.png、right.png。
* 原图片大小是128x160,根据自己的手机屏幕大小提供相应大小的图片。
* 替换完成后,把NameShow.jar安装到手机即可运行。
* 2、上下左右导航键各对应一张图片。
* 3、如果姓名是三个字:up.png对应全名,left.png对应姓,
* down.png对应名的第一个字,right.png对应名的第二个字;
* 如果是姓名是二个字:则down.png可以省略。
* 4、本程序在CLDC1.0,MIDP2.0环境编译,Nokia S40的Java环境成功运行。
*
* [问题]
* Q:自己制作图片太麻烦,为什么不能在程序中输入姓名并保存,每次打开显示上次输入的姓名?
* A:普通手机没有超大字体,要想显示个性画且超大的全屏字,只能用图片。
*
* Q:我的手机不是智能机,可以用吗?
* A:支持Java的手机都可以使用。
*
* Q:直接在手机上显示图片不是更方便?
* A:有的手机全屏显示图片时并不优雅,如果用NameShow将更方便切换姓与名的显示。
*****************************************
* 开发工具:Eclipse Pulsar for Mobile Java Developers
* 手机模拟器:Nokia S40 6th、Motorola
*****************************************
* @author Winty wintys@gmail.com
* @version 2010-01-30
*
*/
public class NameShowMIDlet extends MIDlet
implements CommandListener{
private Command back,exit,help,about;
private NameDisplayCanvas canvas;
private Image []imgs;//四个图片,顺序为上下左右。加一个logo.png,共五个。
private Image img;
private boolean isHelp = false;
private boolean isAbout = false;
public NameShowMIDlet() {
imgs = new Image[5];
back = new Command("返回",Command.BACK,1);
exit = new Command("退出",Command.EXIT , 2);
help = new Command("帮助",Command.HELP, 3);
about = new Command("关于",Command.HELP, 4);
canvas = new NameDisplayCanvas();
canvas.addCommand(back);
canvas.addCommand(exit);
canvas.addCommand(help);
canvas.addCommand(about);
canvas.setCommandListener(this);
Display.getDisplay(this).setCurrent(canvas);
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
}
protected void pauseApp() {
}
protected void startApp() throws MIDletStateChangeException {
String []imgnames = {"up.png","down.png","left.png","right.png","logo.png"};
for(int i = 0;i < imgnames.length; i++){
InputStream is = null;
try{
is = this.getClass().getResourceAsStream(imgnames[i]);
}catch(NullPointerException e){
is = null;
e.printStackTrace();
}
if( is != null){
try {
imgs[i] = Image.createImage(is);
} catch (IOException e) {
e.printStackTrace();
}
}//end of if
}//end of for
}
public void commandAction(Command c, Displayable d) {
if( c == exit){
try {
destroyApp(false);
notifyDestroyed();
} catch (MIDletStateChangeException e) {
e.printStackTrace();
}
}
if( c == about){
isAbout = true;
canvas.repaint();
}
if( c == help){
isHelp = true;
canvas.repaint();
}
}
//内部类,屏幕Canvas
class NameDisplayCanvas extends Canvas{
private static final int COLOR_INFO = 0x0078FF;
private static final int COLOR_ERROR = 0xFF0000;
public NameDisplayCanvas(){
this.setFullScreenMode(true);
}
protected void paint(Graphics g) {
int w = getWidth();
int h = getWidth();
if(isAbout){
String name = "NameShow - 姓名秀";
String author = "作者:天堂露珠";
String email = "Email:wintys@gmail.com";
String date = "Date:2010-01-30";
g.setColor(COLOR_INFO);
displayInfo(g,name,author,email,date);
if(imgs[4] != null)
g.drawImage(imgs[4], w/2, h/2-40, Graphics.TOP|Graphics.HCENTER);
isAbout = false;
return;
}
if(isHelp){
String str1 = "导航键各对应一张图片";
String str2 = "'*'键显示about信息";
String str3 = "'#'键退出程序";
String str4 = "";
g.setColor(COLOR_INFO);
displayInfo(g,str1,str2,str3,str4);
isHelp = false;
return;
}
//默认显示第一张图片
if(img == null)
img = imgs[0];
if(img != null)
g.drawImage(img, 0, 0, Graphics.TOP|Graphics.LEFT);
else{//当所请求显示的图片没有找到时,显示此提示
String str = "无法载入图片!";
clearScreen(g);
g.setColor(COLOR_ERROR);
g.drawString(str, w/2, h/2, Graphics.BASELINE | Graphics.HCENTER);
}
}
protected void keyPressed(int keyCode) {
int action = getGameAction(keyCode);
switch(action){
case LEFT:
img = imgs[2];
break;
case RIGHT:
img = imgs[3];
break;
case DOWN:
img = imgs[1];
break;
case UP:
case FIRE:
default:
img = imgs[0];
break;
}
repaint();
//按下'#'退出
if(keyCode == KEY_POUND){
try {
destroyApp(false);
} catch (MIDletStateChangeException e) {
e.printStackTrace();
}
notifyDestroyed();
}
//按下'*'显示帮助信息
if(keyCode == KEY_STAR){
isAbout = true;
}
}
//清屏
private void clearScreen(Graphics g){
int color = g.getColor();
g.setColor(0xFFFFFF);
g.fillRect(0,0,getWidth(),getHeight());
g.setColor(color);
}
//显示文本信息
private void displayInfo(Graphics g,String s1,String s2 ,String s3,String s4){
int w = getWidth();
int h = getWidth();
clearScreen(g);
int anchor = Graphics.BASELINE | Graphics.HCENTER;
g.drawString(s1, w/2, h/2, anchor);
g.drawString(s2,w/2,h/2+20,anchor);
g.drawString(s3,w/2,h/2+40,anchor);
g.drawString(s4,w/2,h/2+60,anchor);
}
}//end of NameDisplayCanvas
}
import java.io.InputStream;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
/**
* 手机姓名秀 - NameShow
*
* [背景]:
* 1、如果你的名字是生僻字,没法组成常见词,别人问起,你得解释半天,最终还是要拿笔写出来别人才明白。
* 2、当你想向别人展示个性签名时,拿出纸质签名就太土了,也不方便。
* 3、当你需要展示名片时,纸质名片没有带,手机总带了吧?NameShow就派上用场了。
*
* [说明]:
* 1、用WinRAR打开NameShow.jar,
* 用自己制作的姓名图片替换原有up.png、left.png、down.png、right.png。
* 原图片大小是128x160,根据自己的手机屏幕大小提供相应大小的图片。
* 替换完成后,把NameShow.jar安装到手机即可运行。
* 2、上下左右导航键各对应一张图片。
* 3、如果姓名是三个字:up.png对应全名,left.png对应姓,
* down.png对应名的第一个字,right.png对应名的第二个字;
* 如果是姓名是二个字:则down.png可以省略。
* 4、本程序在CLDC1.0,MIDP2.0环境编译,Nokia S40的Java环境成功运行。
*
* [问题]
* Q:自己制作图片太麻烦,为什么不能在程序中输入姓名并保存,每次打开显示上次输入的姓名?
* A:普通手机没有超大字体,要想显示个性画且超大的全屏字,只能用图片。
*
* Q:我的手机不是智能机,可以用吗?
* A:支持Java的手机都可以使用。
*
* Q:直接在手机上显示图片不是更方便?
* A:有的手机全屏显示图片时并不优雅,如果用NameShow将更方便切换姓与名的显示。
*****************************************
* 开发工具:Eclipse Pulsar for Mobile Java Developers
* 手机模拟器:Nokia S40 6th、Motorola
*****************************************
* @author Winty wintys@gmail.com
* @version 2010-01-30
*
*/
public class NameShowMIDlet extends MIDlet
implements CommandListener{
private Command back,exit,help,about;
private NameDisplayCanvas canvas;
private Image []imgs;//四个图片,顺序为上下左右。加一个logo.png,共五个。
private Image img;
private boolean isHelp = false;
private boolean isAbout = false;
public NameShowMIDlet() {
imgs = new Image[5];
back = new Command("返回",Command.BACK,1);
exit = new Command("退出",Command.EXIT , 2);
help = new Command("帮助",Command.HELP, 3);
about = new Command("关于",Command.HELP, 4);
canvas = new NameDisplayCanvas();
canvas.addCommand(back);
canvas.addCommand(exit);
canvas.addCommand(help);
canvas.addCommand(about);
canvas.setCommandListener(this);
Display.getDisplay(this).setCurrent(canvas);
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
}
protected void pauseApp() {
}
protected void startApp() throws MIDletStateChangeException {
String []imgnames = {"up.png","down.png","left.png","right.png","logo.png"};
for(int i = 0;i < imgnames.length; i++){
InputStream is = null;
try{
is = this.getClass().getResourceAsStream(imgnames[i]);
}catch(NullPointerException e){
is = null;
e.printStackTrace();
}
if( is != null){
try {
imgs[i] = Image.createImage(is);
} catch (IOException e) {
e.printStackTrace();
}
}//end of if
}//end of for
}
public void commandAction(Command c, Displayable d) {
if( c == exit){
try {
destroyApp(false);
notifyDestroyed();
} catch (MIDletStateChangeException e) {
e.printStackTrace();
}
}
if( c == about){
isAbout = true;
canvas.repaint();
}
if( c == help){
isHelp = true;
canvas.repaint();
}
}
//内部类,屏幕Canvas
class NameDisplayCanvas extends Canvas{
private static final int COLOR_INFO = 0x0078FF;
private static final int COLOR_ERROR = 0xFF0000;
public NameDisplayCanvas(){
this.setFullScreenMode(true);
}
protected void paint(Graphics g) {
int w = getWidth();
int h = getWidth();
if(isAbout){
String name = "NameShow - 姓名秀";
String author = "作者:天堂露珠";
String email = "Email:wintys@gmail.com";
String date = "Date:2010-01-30";
g.setColor(COLOR_INFO);
displayInfo(g,name,author,email,date);
if(imgs[4] != null)
g.drawImage(imgs[4], w/2, h/2-40, Graphics.TOP|Graphics.HCENTER);
isAbout = false;
return;
}
if(isHelp){
String str1 = "导航键各对应一张图片";
String str2 = "'*'键显示about信息";
String str3 = "'#'键退出程序";
String str4 = "";
g.setColor(COLOR_INFO);
displayInfo(g,str1,str2,str3,str4);
isHelp = false;
return;
}
//默认显示第一张图片
if(img == null)
img = imgs[0];
if(img != null)
g.drawImage(img, 0, 0, Graphics.TOP|Graphics.LEFT);
else{//当所请求显示的图片没有找到时,显示此提示
String str = "无法载入图片!";
clearScreen(g);
g.setColor(COLOR_ERROR);
g.drawString(str, w/2, h/2, Graphics.BASELINE | Graphics.HCENTER);
}
}
protected void keyPressed(int keyCode) {
int action = getGameAction(keyCode);
switch(action){
case LEFT:
img = imgs[2];
break;
case RIGHT:
img = imgs[3];
break;
case DOWN:
img = imgs[1];
break;
case UP:
case FIRE:
default:
img = imgs[0];
break;
}
repaint();
//按下'#'退出
if(keyCode == KEY_POUND){
try {
destroyApp(false);
} catch (MIDletStateChangeException e) {
e.printStackTrace();
}
notifyDestroyed();
}
//按下'*'显示帮助信息
if(keyCode == KEY_STAR){
isAbout = true;
}
}
//清屏
private void clearScreen(Graphics g){
int color = g.getColor();
g.setColor(0xFFFFFF);
g.fillRect(0,0,getWidth(),getHeight());
g.setColor(color);
}
//显示文本信息
private void displayInfo(Graphics g,String s1,String s2 ,String s3,String s4){
int w = getWidth();
int h = getWidth();
clearScreen(g);
int anchor = Graphics.BASELINE | Graphics.HCENTER;
g.drawString(s1, w/2, h/2, anchor);
g.drawString(s2,w/2,h/2+20,anchor);
g.drawString(s3,w/2,h/2+40,anchor);
g.drawString(s4,w/2,h/2+60,anchor);
}
}//end of NameDisplayCanvas
}
运行效果:
这里使用的是测试姓名图片(姓名为“王二小”):
NameShow下载:http://www.blogjava.net/Files/wintys/file/NameShow.zip
原创作品,转载请注明出处。
作者:天堂露珠 (wintys@gmail.com)
博客:http://www.blogjava.net/wintys
作者:天堂露珠 (wintys@gmail.com)
博客:http://www.blogjava.net/wintys
发表评论
-
[原]简易Windows密码查看器
2009-10-10 00:08 1777[标题]:简易Windows密码查看器 [时间]:2009- ... -
[原]ORACLE实验2007
2010-03-10 13:46 1152ORACLE实验2007 实验一 练习1、请查询表DEPT中所 ... -
我的Stylish CSS
2010-03-23 14:10 1220■去除126邮箱广告的Stylish CSS: @-moz- ... -
Greasemonkey猴子脚本
2010-03-23 14:18 1052// ==UserScript== // @name ... -
[原]开发自己的Windows Live Writer插件
2009-10-05 19:26 1929[标题]: 开发自己的Windows Live Writer插 ... -
[原]将Puppy Linux安装到U盘
2009-09-21 00:12 5725[标题]:将Puppy Linux安装到U盘 [时间]:2 ... -
[原]在全局鼠标钩子中模拟鼠标右键单击
2009-03-28 15:55 4314[标题]:在全局鼠标钩子中模拟鼠标右键单击 [时间]:2009 ... -
[原]使用"异或"简单加密的实现
2009-04-19 19:30 2102[标题]:使用"异或"简单加密的实现 [时 ... -
[转]在Word中让目录不显示页码
2009-05-07 23:26 1801[问题]: 文章由目录和正文两部分组成,我想让目录部分不显示页 ...
相关推荐
本篇将深入探讨一个名为`human-name-compare`的Python库,版本为0.3.14,它是一个专门用于处理和比较人名的工具,适用于那些需要处理大量人名数据或进行姓名规范化的工作场景。本文将详细介绍该库的功能、使用方法...
<filter-name>httpHeaderSecurity</filter-name> <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class> <async-supported>true</async-supported> <init-param> <param-name>...
"Tele-Verification-Positive-Caller-Name--Name-Fathers-Name-OR-Husbands-Name-Address"这一标题和描述暗示了一个系统或过程,该过程旨在通过电话确认个人的身份,包括他们的全名、父亲的名字或丈夫的名字以及地址...
姓名密码(Namekey) 2006 7[1].8.1 绿色破解版.rar
ramdon-name生成随机昵称,随机姓名,男生姓名,女生姓名使用方法download##在需要用到的文件引用即可 // import randomName from 'youpath/random-name'生成一个名字(男女不限)randomName.getName();生成一个名字...
在编程领域,排序是至关重要的一个操作...总之,"sort-by-name.rar"文件中的算法可能涉及了如何利用C++的标准库函数和自定义比较函数,按照字典顺序对姓名列表进行排序,这在数据处理和分析中是非常常见且实用的技能。
"Tele-Verification-Follow-Up-Caller-Name--Reason---Name-Fathers-Name-OR-Husbands-N"这一标题可能指的是一个系统或过程,用于在电话中进行后续验证,确保与客户进行沟通的人的身份真实可靠。这一过程涉及到以下...
显示名称 一个简单的包,以各种 Web 安全方式显示用户的真实姓名,即 Eric B. 或 E B. 还包括一个 Laravel Facade。安装通过作曲家$ composer require ericmakesstuff/display-name用法 $ displayName = new ...
姓名综合分析,中文名取名向导(同行功能最强),八字命运预测,中文姓名分析,英文姓名分析,公司,品牌,行业名称分析,中华姓氏来源及单字五行字意与通用字义查询,阴阳历相互转换等其他起名辅助功能。本软件共收录...
<filter-name>CORS</filter-name> <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class> <init-param> <param-name>cors.allowOrigin</param-name> <param-value>*</param-value> </init-...
java代码-使用java构造Person类。包括姓名(name),性别和年龄(age)的源代码 ——学习参考资料:仅用于个人学习使用!
<filter-name>GZIPFilter</filter-name> <filter-class>com.tacitknowledge.filters.gzipfilter.GZIPFilter</filter-class> <filter-mapping> <filter-name>GZIPFilter</filter-name> <url-pattern>*.js</url...
<filter-name>CORS</filter-name> <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class> <init-param> <param-name>cors.allowOrigin</param-name> <param-value>*</param-value> ...
select class="dept-name-show" style="width: 70%;"> </select> 二、编写js语句: [removed] $(function () { var dname = $(".dept-name-show").eq(0);//选定<select>标签 var url = "${...
-h, --help show this help message and exit -o OUTPUT, --output OUTPUT 文件输出目录,不传则与源文件同目录 -n NAME, --name NAME 输出的python文件名 解压后,将src文件夹添加到环境变量path中,即可在...
查看手机目前安装的所有应用 $ pm list packages 卸载包名为 com.x 的应用(含 “-k” 的命令会保留用户数据,而后者则不会) $ pm uninstall -k --user 0 com.x $ pm uninstall --user 0 com.x *停止或冻结包名为...
我们要建立一个你公司员工的生日表,表的内容包含员工姓名、性别、出生日期、出生城市。 mysql> CREATE TABLE mytable (name VARCHAR(20), sex CHAR(1), -> birth DATE, birthaddr VARCHAR(20)); Query OK, 0 ...
ELEMENT filter-mapping (filter-name, url-pattern | servlet-name)> <!ELEMENT filter-name (#PCDATA)> <!ELEMENT url-pattern (#PCDATA)> <!ELEMENT servlet-name (#PCDATA)> ``` 示例: ```xml <filter-...
<filter-name>CAS HttpServletRequest Wrapper Filter</filter-name> <filter-class> org.jasig.cas.client.util.HttpServletRequestWrapperFilter </filter-class> <!-- CAS SINGLE SIGN OUT FILTER --...
`v-show` 和 `v-if` 都是 Vue 中的条件渲染指令,它们的主要区别在于渲染策略:`v-if` 会根据条件决定是否编译元素,而 `v-show` 则始终编译元素,只是通过改变 CSS 的 `display` 属性来控制显示与隐藏。然而,当...