这个实例的本意展示j2me的字体,和滚屏的实现。我只实现了android自带的三种字体.

下面给出效果图:

image

image

下面给出MainView的代码

Java代码

package com.wjh.demon_6;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.SurfaceHolder.Callback;

public class MainView extends SurfaceView implements Callback,Runnable{
Thread gameThread = null;
boolean isGame = true;
SurfaceHolder holder = null;

//游戏相关
int m_nPosY = 0;
Paint[] paints = null;
Paint backPaint = null;
public MainView(Context context) {
super(context);
// TODO Auto-generated constructor stub
setFocusable(true);
getHolder().addCallback(this);
holder = this.getHolder();
// 设定字体
paints = new Paint[3];
for(int i=0;i<3;i++)
{
paints[i] = new Paint();
}
paints[0].setColor(Color.RED);
paints[0].setTypeface(Typeface.MONOSPACE);
paints[0].setTextSize(15);

paints[1].setColor(Color.GREEN);
paints[1].setTypeface(Typeface.SANS_SERIF);
paints[1].setTextSize(20);


paints[2].setColor(Color.BLUE);
paints[2].setTypeface(Typeface.SERIF);
paints[2].setTextSize(25);
//创建背景画笔
backPaint = new Paint();
backPaint.setColor(Color.BLACK);





}
@Override
public void run() {
// TODO Auto-generated method stub
while(isGame)
{
input();
logic();
doDraw();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}
//开始游戏主线程
public void start()
{
if(gameThread == null)
{
gameThread = new Thread(this);
gameThread.start();
}
}
//停止游戏主线程
public void stop()
{
isGame = false;
if(gameThread != null)
{
try {
gameThread.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//输入判断
public void input()
{

}
//逻辑判断
public void logic()
{
//不断更改m_nPosY的值,实现文字滚屏
m_nPosY ++;
//如果文字已滚至屏幕最下方,则重新设置文字的纵坐标
if( m_nPosY > getHeight() )
m_nPosY = 0;
}
public void doDraw()
{
Canvas c = null;
try
{
c = holder.lockCanvas();
synchronized (holder) {
paint(c);
}
}finally{
if(c != null)
{
holder.unlockCanvasAndPost(c);
}
}
}
//画图
public void paint(Canvas canvas)
{

//用黑色清屏
canvas.drawRect(0, 0, getWidth(), getHeight(), backPaint);
//设置当前字体,并以不同字体输出“2008年奥运会”几个字
for(int i=0;i<3;i++)
{
canvas.drawText("2008年奥运会", 20+30*i,m_nPosY-(40-25*i), paints[i]);
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub

}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
start();

}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
stop();

}

}

下载源码:http://www.gphone.cc/showtopic-34.aspx

更多相关文章

  1. Android 调用系统的分享[完美实现同时分享图片和文字]
  2. android TextView 实现自定义文字点击效果
  3. FregServer进程,发送BC_TRANSACTION,唤醒ServiceManager进程,返回BR
  4. 在非主线程中不能操作主线程中的View
  5. android之网络请求 -- 获取RecyclerView的列表项(图片 + 文字)
  6. 【Android 界面效果42】如何自定义字体
  7. 教你如何修改Android默认字体大小和设置字体大小比例
  8. 【Android】字体
  9. Android 的实现TextView中文字链接的4种方法

随机推荐

  1. 解析linux包管理和系统更新
  2. 有关Linux内核分析课程的总结
  3. Ubuntu 12.10安装Bochs 2.6, 调试linux-0
  4. Linux Shell脚本攻略
  5. 如何使用for-each循环在bash中迭代文件路
  6. 2013年腾讯内推 电面问题 总结
  7. 保护SD卡Raspberry Pi上的数据
  8. linux centos6.5支持ipv6
  9. SWAP空间不足的处理方法
  10. Linux下编译安装PHP7.2