android 的线程绘制View(简单列子)
来源:互联网 发布:linux和shell的关系 编辑:程序博客网 时间:2024/06/09 17:06
package com.game.activity;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.Window;
import android.view.WindowManager;
public class GameActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
DisplayMetrics dm = new DisplayMetrics();
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
//获取屏幕信息
getWindowManager().getDefaultDisplay().getMetrics(dm);
int w = dm.widthPixels;
int h = dm.heightPixels;
final MyView myView = new MyView(this ,w ,h) ;
setContentView(myView);
}
class MyView extends SurfaceView implements SurfaceHolder.Callback,Runnable{
SurfaceHolder holder=null;
Paint paint;
int w = 0 ;
int h = 0 ;
int radius = 280 ;
private float x,y;
private float s = 0.1f ;
private boolean xis,yis = false ;
private long time = 0 ;
Bitmap bitmap ;
public MyView(Context context , int w , int h) {
super(context);
// TODO Auto-generated constructor stub
this.w = w ;
this.h = h ;
holder=getHolder();
holder.addCallback(this);
paint=new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(Color.LTGRAY);
paint.setTextSize(40) ;
this.setFocusable(true);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// TODO Auto-generated method stub
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
Thread t=new Thread(this);
t.start();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
isRunning=false;
}
private void paint() {
try{
SimpleDateFormat format = new SimpleDateFormat("yy年MM月dd日") ;
SimpleDateFormat formats = new SimpleDateFormat("hh时mm分ss秒") ;
Date d = new Date(System.currentTimeMillis() );
String date = format.format(d) ;
String dates = formats.format(d) ;
Canvas canvas=holder.lockCanvas();
//刷屏
canvas.drawColor(Color.BLACK);
canvas.drawText(date, x, y, paint) ;
canvas.drawText(dates, x, y+40, paint) ;
holder.unlockCanvasAndPost(canvas);
}catch(Exception e){
System.out.println("huizhicuowu");
}
}
boolean isRunning=true;
@Override
public void run() {
// TODO Auto-generated method stub
long time = System.currentTimeMillis() ;
while (isRunning) {
move(System.currentTimeMillis() -time);
}
}
private void move(long time){
if(time- this.time > 10){
if(xis)
x= (float) (x+ (time- this.time)*s);
else
x =(float) (x - (time- this.time)*s);
if(yis)
y= (float) (y+ (time- this.time)*s);
else
y= (float) (y- (time- this.time)*s);
if(x>=w-radius)
xis = false ;
if(x<=0)
xis = true ;
if(y>=h-40)
yis = false ;
if(y<= 40)
yis = true ;
this.time = time ;
paint();
}
}
}
}
- android 的线程绘制View(简单列子)
- 最简单的列子
- JAVA8的简单列子
- Android view的绘制流程(一)
- Android view的绘制流程(二)
- Android view的绘制流程(三)
- Android开发笔记之ViewPager+Fragment简单列子的实现
- 简单总结Android View 绘制过程
- Strtus2 简单的小列子
- Android中View的绘制
- android view的绘制过程
- Android中View的绘制
- Android View绘制的流程
- Android View的绘制流程
- Android View的绘制过程
- android怎么样绘制view的
- android View的绘制流程
- Android View的绘制流程
- android sqlite支持的数据类型
- Android开发第一步,运行sample
- Android repo/git server 建立过程
- Libgdx New 3D API 教程之 -- Libgdx 3D 基础
- 关于platform_device和platform_driver的匹配
- android 的线程绘制View(简单列子)
- CreateWindow函数窗体风格dwstyle解析
- netty中,pipeline用的参数
- Hadoop secondarynamenode应用
- UVa 10341 - Solve It
- chart控件控制图形的大小和位置
- web安全
- 转载刘伟老师写给明天的软件工程师——感悟篇
- java与sql 之间数据类型转换关系