首页 / ANDROID / android 之 View
android 之 View
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了android 之 View,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3963字,纯文字阅读大概需要6分钟。
内容图文
![android 之 View](/upload/InfoBanner/zyjiaocheng/1278/80f8704cf65f49d481211a84de58575e.jpg)
在进行游戏开发时,需要自定义各种控件和界面。
自定义View的使用:
- 绘制屏幕
- 刷新屏幕:后台数据发生了变化,需要开发人员自己刷新屏幕以显示最新数据
例子:
MyView开发,绘制界面View内容:
package com.sunny;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.view.View;public class MyView extends View {
static final int ANGLE_MAX = 50;
static final int SPEED = 4;
static final int SCREEN_WIDTH = 480;
static final int SCREEN_HEIGHT = 320;static final int LEFT = 2;
static final int RIGHT = 0;
static final int UP = 3;
static final int DOWN = 1;int angle = 30;
int angleChange = 3;
int radius = 16;
int centerX = radius;
int centerY = radius;
long timeStamp = System.currentTimeMillis();int currPhoto=0;
int direction = RIGHT;
Bitmap bmpMan;
Bitmap[] bmpPhotos;
int[] imgIds = { R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.d };public MyView(Context context) {
super(context);
// TODO Auto-generated constructor stub
bmpMan = BitmapFactory.decodeResource(getResources(), R.drawable.man);
//System.out.println(bmpMan.getWidth());
bmpPhotos = new Bitmap[imgIds.length];
for (int i = 0; i < bmpPhotos.length; i++) {
bmpPhotos[i] = BitmapFactory.decodeResource(getResources(),
imgIds[i]);
}
}@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stubPaint paint = new Paint();
canvas.drawColor(Color.BLACK);
canvas.drawBitmap(bmpMan, centerX - radius, centerY - radius, null);
paint.setColor(Color.BLACK);
paint.setAntiAlias(true);
RectF oval = new RectF(centerX - radius - 1, centerY - radius - 2,
centerX - radius - 1 + 2 * radius + 2, centerY - radius - 2 + 2
* radius + 4);
canvas.drawArc(oval, 360-angle+90*direction, 2*angle, true, paint);
if (System.currentTimeMillis() - timeStamp > 5000) {
timeStamp = System.currentTimeMillis();
currPhoto = (currPhoto + 1) % bmpPhotos.length;
}
canvas.drawBitmap(bmpPhotos[currPhoto], 80, 40, null);
super.onDraw(canvas);
}}
MyThread线程主要控制View中元素的变化,及时刷新View信息:
package com.sunny;
public class MyThread extends Thread {
int sleepSpan = 30;
MyView myView;public MyThread(MyView myView) {
super();
this.myView = myView;
}public void run() {
while (true) {
myView.angle += myView.angleChange;
if (myView.angle > MyView.ANGLE_MAX) {
myView.angleChange = -3;
} else if (myView.angle < 0) {
myView.angleChange = 3;
}
switch (myView.direction) {
case MyView.RIGHT:
myView.centerX = myView.centerX + myView.SPEED;
break;
case MyView.UP:
myView.centerY = myView.centerY - myView.SPEED;
break;
case MyView.LEFT:
myView.centerX = myView.centerX - myView.SPEED;
break;
case MyView.DOWN:
myView.centerY = myView.centerY + myView.SPEED;
break;
}
if (myView.centerY + myView.radius > MyView.SCREEN_HEIGHT) {
myView.centerY = myView.centerY - MyView.SPEED;
myView.direction = MyView.LEFT;
}
if (myView.centerY - myView.radius < 0) {
myView.centerY = myView.centerY + MyView.SPEED;
myView.direction = MyView.RIGHT;
}
if (myView.centerX + myView.radius > MyView.SCREEN_WIDTH) {
myView.centerX = myView.centerX - MyView.SPEED;
myView.direction = MyView.DOWN;
}
if (myView.centerX - myView.radius < 0) {
myView.centerX = myView.radius;
myView.direction = MyView.UP;
}
myView.postInvalidate();
try {
Thread.sleep(sleepSpan);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
在Activity中,创建View和后台线程:
public class mainActivity extends Activity {
/** Called when the activity is first created. */
MyView myView;
MyThread mt;@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
myView = new MyView(this);
setContentView(myView);
mt = new MyThread(myView);
mt.start();
}
}
原文:http://www.cnblogs.com/yechanglv/p/6922962.html
内容总结
以上是互联网集市为您收集整理的android 之 View全部内容,希望文章能够帮你解决android 之 View所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。