MainActivity
package org.wp.activity;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
public class MainActivity extends Activity implements OnClickListener {
private Button leftBtn, rightBtn;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
leftBtn = (Button) this.findViewById(R.id.leftBtn);
rightBtn = (Button) this.findViewById(R.id.rightBtn);
leftBtn.setOnClickListener(this);
rightBtn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
int id = v.getId();
if (id == R.id.leftBtn) {
MySurfaceView.notice = "点击了LeftButton";
} else if (id == R.id.rightBtn) {
MySurfaceView.notice = "点击了RightButton";
}
}
}
MySurfaceView
package org.wp.activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class MySurfaceView extends SurfaceView implements
SurfaceHolder.Callback, Runnable {
public static String notice = "自定义SurfaceView";
private SurfaceHolder sfh;
private Canvas canvas;
private Paint paint;
private int x = 30, y = 80, move_x = 2;
public MySurfaceView(Context context, AttributeSet attrs) {
super(context, attrs);
this.setKeepScreenOn(true);
this.setFocusable(true);
sfh = this.getHolder();
sfh.addCallback(this);
paint = new Paint();
paint.setAntiAlias(true);
paint.setTextSize(20);
}
@Override
public void run() {
while (true) {
draw();
logic();
try {
Thread.sleep(100);
} catch (Exception e) {
e.printStackTrace();
}
}
}
private void draw() {
canvas = sfh.lockCanvas();
canvas.drawColor(Color.WHITE);
canvas.drawText(notice, x, y, paint);
sfh.unlockCanvasAndPost(canvas);
}
private void logic() {
x += move_x;
if (x >= 200 || x <= 30) {
move_x = -move_x;
}
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
new Thread(this).start();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <org.wp.activity.MySurfaceView android:layout_width="fill_parent" android:layout_height="fill_parent" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:textSize="32sp" android:textColor="#00FF00" android:text="This is Android" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:orientation="horizontal" android:gravity="center"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="LeftButton" android:id="@+id/leftBtn" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="RightButton" android:id="@+id/rightBtn" /> </LinearLayout> </RelativeLayout>