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

下面给出效果图:



下面给出MainView的代码

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 stubsetFocusable(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);}@Overridepublic void run() {// TODO Auto-generated method stubwhile(isGame){input();logic();doDraw();try {Thread.sleep(100);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.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 blocke.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]);}}@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {// TODO Auto-generated method stub}@Overridepublic void surfaceCreated(SurfaceHolder holder) {// TODO Auto-generated method stubstart();}@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {// TODO Auto-generated method stubstop();}}

apk文件包(修改后缀为apk):Demon_6.zip

源文件包:Demon_6.rar

更多相关文章

  1. Android(安卓)-- SurfaceFlinger 合成主线程 系列 (三)
  2. Android(安卓)将类中的文字提取到String.xml中
  3. MPAndroidChart项目实战(三)——饼状图实现和文字重合问题解决
  4. android线程间通信和主线程更新ui
  5. Android中对TextView中的部分内容的字体样式的设置方法
  6. android中将路径设为文字加图片的形式
  7. 解决ionic在Android和iOS的一些样式上的冲突
  8. Android利用Handler更新主线程UI
  9. Android滑动页面导航效果: PagerSlidingTabStrip

随机推荐

  1. Android(安卓)多媒体 -- 四种播放视频的
  2. Android 缓存的工具类
  3. Android(安卓)gradle编译指令(implementat
  4. Android Export aborted because fatal e
  5. android 开发报错处理
  6. android 8.1launcher去掉抽屉,显示allapp
  7. Android的VideoView如何循环播放
  8. android的samples
  9. android Sqlite数据库事务处理*.sql 语句
  10. android的WebView简单实例