Android LCD背景颜色和边框颜色的可控制

我们大家都知道android LCD背景颜色和边框颜色的是可控制,实现在mountionEvent中对onClick和onLongClick的区分,利用线程返回不同的值;实现边框颜色和背景颜色的改变,那么我们来看看下面的代码,是怎么实现LCD的背景颜色和边框颜色。


package eoe.android;

import java.util.Date;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;

import android.graphics.Paint.Style;
import android.os.Bundle;
import android.os.Handler;

import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;

public class ScreenChange extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// MyView.this.setOnClickListener(mClickListener);

requestWindowFeature(Window.FEATURE_NO_TITLE);
//设置成全屏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);

setContentView(new MyView(this));

//dm.heightPixels=100;
//dm.widthPixels=200;

//this.setOnLongClickListener(new OnLongClickListener(){

//getWindowManager().addView(arg0, arg1)
}

public class MyView extends SurfaceView implements
SurfaceHolder.Callback,android.view.View.OnKeyListener,android.view.View.OnTouchListener,
android.view.View.OnClickListener,android.view.View.OnLongClickListener {
boolean mLong;
boolean handled;
private static final int MAX_TOUCHPOINTS = 10;
// private static final String START_TEXT = "请触摸屏幕进行测试";
private Paint textPaint = new Paint();
private Paint touchPaints[] = new Paint[MAX_TOUCHPOINTS];
private int colors[] = new int[MAX_TOUCHPOINTS];

private int width, height;
private float scale = 1.0f;

private float timesecond = (float)5;

private int screencolor = 1;
private int backcolor = 1;

long timedown;
private long timeperiod;

protected OnClickListener mOnClickListener = new OnClickListener() {
public void onClick(View v) {
// do something when the button is clicked
if(backcolor==10){backcolor=1;}
backcolor++;
}
};


public void setOnClickListener(OnClickListener l) {
if (!isClickable()) {
setClickable(true);
}
mOnClickListener = l;
}

public OnLongClickListener mOnLongClickListener =new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
//if (onLongPress != null) {
// onLongPress.onLongPress(v);
//}
if(screencolor==10){screencolor=1;}
changebackcolor(screencolor);
screencolor++;
return true;
}


};

public void setOnLongClickListener(OnLongClickListener l) {
if (!isLongClickable()) {
setLongClickable(true);
}
mOnLongClickListener = l;

}

SurfaceHolder holder;
public MyView(Context context) {
super(context);
SurfaceHolder holder = getHolder();
holder.addCallback(this);
setFocusable(true); // 确保View能获得输入焦点
setFocusableInTouchMode(true); // 确保能接收到触屏事件
setOnClickListener(mOnClickListener);
setOnLongClickListener(mOnLongClickListener);
init();

}

private void init() {
// 初始化10个不同颜色的画笔
textPaint.setColor(Color.WHITE);
textPaint.setAlpha(0x40);
colors[0] = 1;
colors[1] = 2;
colors[2] = 3;
colors[3] = 4;
colors[4] = 5;
colors[5] = 6;
colors[6] = 7;
colors[7] = 8;
colors[8] = 9;
colors[9] = 10;
for (int i = 0; i < MAX_TOUCHPOINTS; i++) {
touchPaints[i] = new Paint();
touchPaints[i].setColor(colors[i]);
}
}


/*
* 处理触屏事件
*/

@Override
public boolean onTouchEvent(MotionEvent event) {
// 获得屏幕触点数量
int pointerCount = event.getPointerCount();
if (pointerCount > MAX_TOUCHPOINTS) {
pointerCount = MAX_TOUCHPOINTS;
}
// 锁定Canvas,开始进行相应的界面处理
Canvas c = getHolder().lockCanvas();
if (c != null) {
// c.drawColor(Color.BLACK);
if (event.getAction() == MotionEvent.ACTION_UP) {
handler1.removeCallbacks(runnable);
if (!handled) {
performClick();


}
switch(backcolor){
case 1:
c.drawColor(Color.GREEN);
break;
case 2:
c.drawColor(Color.DKGRAY);
break;
case 3:
c.drawColor(Color.GRAY);
break;
case 4:
c.drawColor(Color.LTGRAY);
break;
case 5:
c.drawColor(Color.MAGENTA);
break;
case 6:
c.drawColor(Color.RED);
break;
case 7:
c.drawColor(Color.WHITE);
break;
case 8:
c.drawColor(Color.YELLOW);
break;
case 9:
c.drawColor(Color.TRANSPARENT);
break;
case 10:
c.drawColor(Color.CYAN);
break;
default:
break;

}

textPaint.setStyle(Style.STROKE);
textPaint.setStrokeWidth(10);
c.drawRect(0, 0, this.width, this.height, textPaint);

} else if(event.getAction() == MotionEvent.ACTION_DOWN) {


handled=false;
timedown = event.getEventTime();
postCheckForLongClick(c);
switch(backcolor){
case 1:
//this.setBackgroundColor(Color.GREEN);
c.drawColor(Color.GREEN);
//getHolder().lockCanvas().drawColor(Color.GREEN);
break;
case 2:
c.drawColor(Color.DKGRAY);
break;
case 3:
c.drawColor(Color.GRAY);
break;
case 4:
c.drawColor(Color.LTGRAY);
break;
case 5:
c.drawColor(Color.MAGENTA);
break;
case 6:
c.drawColor(Color.RED);
break;
case 7:
c.drawColor(Color.WHITE);
break;
case 8:
c.drawColor(Color.YELLOW);
break;
case 9:
c.drawColor(Color.TRANSPARENT);
break;
case 10:
c.drawColor(Color.CYAN);
break;
default:
break;

}
textPaint.setStyle(Style.STROKE);
textPaint.setStrokeWidth(10);
c.drawRect(0, 0, this.width, this.height, textPaint);
}
else{
textPaint.setStyle(Style.STROKE);
textPaint.setStrokeWidth(10);
c.drawRect(0, 0, this.width, this.height, textPaint);
}


getHolder().unlockCanvasAndPost(c);
}
return true;
}

public boolean performClick() {
if (mOnClickListener != null) {
mOnClickListener.onClick(this);
return true;
}
return false;
}

Handler handler1=new Handler();
Runnable runnable=new Runnable(){

public void run() {
// TODO Auto-generated method stub
//要做的事情
// mOnLongClickListener.onLongClick(this);
Date timeNow = new Date(System.currentTimeMillis());
timeperiod = (long)timeNow.getTime()-(long)timedown;
if(timeperiod > timesecond){
handler1.postDelayed(runnable, 500);
performLongClick();

mLong = true;
handler1.removeCallbacks(runnable);
}
else{
handler1.removeCallbacks(runnable);
}
}
};


private void postCheckForLongClick(Canvas c) {
mLong = false;
handler1.postDelayed(runnable, 500);
if(mLong == true){
performLongClick();
}
}

public boolean performLongClick() {
if (mOnLongClickListener != null) {
handled = mOnLongClickListener.onLongClick(this);
mLong = true;
}
if(mLong == true)handler1.removeCallbacks(runnable);
return handled;

}

public void changebackcolor(int pc){
switch(pc){
case 1:
//this.setBackgroundColor(Color.GREEN);
textPaint.setColor(Color.GREEN);
//getHolder().lockCanvas().drawColor(Color.GREEN);
break;
case 2:
textPaint.setColor(Color.DKGRAY);
break;
case 3:
textPaint.setColor(Color.GRAY);
break;
case 4:
textPaint.setColor(Color.LTGRAY);
break;
case 5:
textPaint.setColor(Color.MAGENTA);
break;
case 6:
textPaint.setColor(Color.RED);
break;
case 7:
textPaint.setColor(Color.WHITE);
break;
case 8:
textPaint.setColor(Color.YELLOW);
break;
case 9:
textPaint.setColor(Color.TRANSPARENT);
break;
case 10:
textPaint.setColor(Color.CYAN);
break;
default:
break;
}
}


@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {

this.width = width;
this.height = height;
if (width > height) {
this.scale = width / 480f;
} else {
this.scale = height / 480f;
}
textPaint.setTextSize(14 * scale);

}

@Override
public void surfaceCreated(SurfaceHolder holder) {
//new Thread(new MyThread()).start();
}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {

}

@Override
public boolean onLongClick(View v) {
// TODO Auto-generated method stub
return false;
}

@Override
public void onClick(View v ) {
// TODO Auto-generated method stub
}

@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
// TODO Auto-generated method stub
return false;
}

@Override
public boolean onKey(View arg0, int arg1, KeyEvent arg2) {
// TODO Auto-generated method stub
return false;
}

/*
//内部类的内部类
class MyThread implements Runnable{

@Override
public void run() {
Canvas canvas = holder.lockCanvas(null);//获取画布
Paint mPaint = new Paint();
mPaint.setColor(Color.BLUE);

canvas.drawRect(new RectF(40,60,80,80), mPaint);
holder.unlockCanvasAndPost(canvas);//解锁画布,提交画好的图像

}

}
*/

}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值