当前位置:   article > 正文

androd---自定义VIEW实现网格布局_android 自定义网格布局view

android 自定义网格布局view

今天在说下自定义VIEW--- 实现网格布局的这个功能吧。最近这个需求是检测手机屏幕是否出现问题,所以需要触摸屏幕网格,看是否会变色,如果不会变色,说明屏幕对应这块网格有问题。希望对大家在后面的类似需求的时候,有帮助

直接上代码吧

  1. public class GridRelativeLayout extends RelativeLayout {
  2. private Canvas myCanvas;
  3. private int horGrid = 100, verGrid = 100;//水平网格和竖直网格
  4. private int screenW, screenH;//屏幕宽和高
  5. private boolean initOver = false;//初始化标签
  6. public GridRelativeLayout(Context context) {
  7. super(context);
  8. setWillNotDraw(false);
  9. }
  10. public GridRelativeLayout(Context context, AttributeSet attrs) {
  11. super(context, attrs);
  12. setWillNotDraw(false);
  13. }
  14. public GridRelativeLayout(Context context, AttributeSet attrs, int defStyle) {
  15. super(context, attrs, defStyle);
  16. setWillNotDraw(false);
  17. this.setOnClickListener(new OnClickListener() {
  18. @Override
  19. public void onClick(View v) {
  20. }
  21. });
  22. }
  23. @Override
  24. protected void onDraw(Canvas canvas) {
  25. super.onDraw(canvas);
  26. this.myCanvas = canvas;
  27. Paint paint = new Paint();
  28. paint.setColor(Color.BLACK);//颜色
  29. paint.setStrokeWidth(3);//线宽
  30. int verNum = (int)(screenH / verGrid) + 1;
  31. int horNum = 9;
  32. if (initOver) {
  33. for (int i = 0; i < verNum; i++) {
  34. canvas.drawLine(0, i * verGrid - 1, screenW, i * verGrid - 1,
  35. paint);
  36. }
  37. for (int i = 0; i < horNum-1; i++) {
  38. canvas.drawLine((i+1)*(screenW/horNum), 1, (i+1)*(screenW/horNum), screenH,
  39. paint);
  40. }
  41. }
  42. }
  43. /**设置网格线参数**/
  44. public void setInf(int vergrid, int horgrid, int screenW, int screenH) {
  45. this.verGrid = vergrid;
  46. this.horGrid = horgrid;
  47. this.screenW = screenW;
  48. this.screenH = screenH;
  49. initOver = true;
  50. postInvalidate();
  51. }

其实核心需要大家去计算和考虑的问题 就是这几行代码

  1. for (int i = 0; i < verNum; i++) {
  2. canvas.drawLine(0, i * verGrid - 1, screenW, i * verGrid - 1,
  3. paint);
  4. }
  5. for (int i = 0; i < horNum-1; i++) {
  6. canvas.drawLine((i+1)*(screenW/horNum), 1, (i+1)*(screenW/horNum), screenH,
  7. paint);
  8. }


起点的X, Y 坐标,终点的X,Y坐标

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/420643
推荐阅读
相关标签
  

闽ICP备14008679号