Android LCD效果(一)

来源:互联网 发布:java中级工程师考试 编辑:程序博客网 时间:2024/05/22 12:04
    我们大家都知道androidLCD背景颜色和边框颜色的是可控制,实现在mountionEvent中对onClick和onLongClick的区分,利用线程返回不同的值;实现边框颜色和背景颜色的改变,那么我们来看看下面的代码,是怎么实现LCD的背景颜色和边框颜色。

java代码:
  1. import java.util.Date;
  2. import android.app.Activity;
  3. import android.content.Context;
  4. import android.graphics.Canvas;
  5. import android.graphics.Color;
  6. import android.graphics.Paint;

  7. import android.graphics.Paint.Style;
  8. import android.os.Bundle;
  9. import android.os.Handler;

  10. import android.view.KeyEvent;
  11. import android.view.MotionEvent;
  12. import android.view.SurfaceHolder;
  13. import android.view.SurfaceView;
  14. import android.view.View;
  15. import android.view.Window;
  16. import android.view.WindowManager;

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

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

  27. setContentView(new MyView(this)); 

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

  30. //this.setOnLongClickListener(new OnLongClickListener(){

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

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

  43. private int width, height; 
  44. private float scale = 1.0f; 

  45. private float timesecond = (float)5;

  46. private int screencolor = 1;
  47. private int backcolor = 1;

  48. long timedown;
  49. private long timeperiod;

  50. protected OnClickListener mOnClickListener = new OnClickListener() {
  51. public void onClick(View v) {
  52. // do something when the button is clicked
  53. if(backcolor==10){backcolor=1;}
  54. backcolor++;
  55. }
  56. }; 


  57. public void setOnClickListener(OnClickListener l) {
  58. if (!isClickable()) {
  59. setClickable(true);
  60. }
  61. mOnClickListener = l;
  62. }

  63. public OnLongClickListener mOnLongClickListener =new OnLongClickListener() {
  64. @Override
  65. public boolean onLongClick(View v) {
  66. //if (onLongPress != null) {
  67. // onLongPress.onLongPress(v);
  68. //}
  69. if(screencolor==10){screencolor=1;}
  70. changebackcolor(screencolor);
  71. screencolor++;
  72. return true;
  73. }


  74. }; 

  75. public void setOnLongClickListener(OnLongClickListener l) {
  76. if (!isLongClickable()) {
  77. setLongClickable(true);
  78. }
  79. mOnLongClickListener = l;

  80. }

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



  91. private void init() { 
  92. // 初始化10个不同颜色的画笔 
  93. textPaint.setColor(Color.WHITE); 
  94. textPaint.setAlpha(0x40); 
  95. colors[0] = 1; 
  96. colors[1] = 2; 
  97. colors[2] = 3; 
  98. colors[3] = 4; 
  99. colors[4] = 5; 
  100. colors[5] = 6; 
  101. colors[6] = 7; 
  102. colors[7] = 8; 
  103. colors[8] = 9; 
  104. colors[9] = 10; 
  105. for (int i = 0; i < MAX_TOUCHPOINTS; i++) { 
  106. touchPaints[i] = new Paint(); 
  107. touchPaints[i].setColor(colors[i]); 




  108. /* 
  109. * 处理触屏事件 
  110. */ 

  111. @Override 
  112. public boolean onTouchEvent(MotionEvent event) { 
  113. // 获得屏幕触点数量 
  114. int pointerCount = event.getPointerCount(); 
  115. if (pointerCount > MAX_TOUCHPOINTS) { 
  116. pointerCount = MAX_TOUCHPOINTS; 

  117. // 锁定Canvas,开始进行相应的界面处理 
  118. Canvas c = getHolder().lockCanvas(); 
  119. if (c != null) { 
  120. // c.drawColor(Color.BLACK); 
  121. if (event.getAction() == MotionEvent.ACTION_UP) { 
  122. handler1.removeCallbacks(runnable);
  123. if (!handled) {
  124. performClick();
复制代码

系列之Android LCD效果(二)的帖子链接http://www.eoeandroid.com/thread-96340-1-1.html
原创粉丝点击