日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

自定义布局RelativeLayout 画网格线

發布時間:2025/6/15 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 自定义布局RelativeLayout 画网格线 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在Android中畫線必須由一個載體,要么是一個控件,要么是一個布局,其實他們都是繼承自View,通過自定義控件或布局的方式畫線是最常見的。下面的小例子實現了在自定義RelativeLayout中畫網格線

?

自定義控件代碼:

package layout.layout.ex;import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.util.AttributeSet; import android.widget.RelativeLayout;public class GridRelativeLayout extends RelativeLayout {private Canvas myCanvas;private int horGrid = 100, verGrid = 100;//水平網格和豎直網格private int screenW, screenH;//屏幕寬和高private boolean initOver = false;//初始化標簽public GridRelativeLayout(Context context) {super(context);setWillNotDraw(false);}public GridRelativeLayout(Context context, AttributeSet attrs) {super(context, attrs);setWillNotDraw(false);}public GridRelativeLayout(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);setWillNotDraw(false);}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);this.myCanvas = canvas;Paint paint = new Paint();paint.setColor(android.graphics.Color.YELLOW);//顏色paint.setStrokeWidth(3);//線寬int verNum = (int)(screenH / verGrid) + 1;int horNum = (int)(screenW / horGrid) + 1;if (initOver) {for (int i = 0; i < verNum; i++) {canvas.drawLine(0, i * verGrid - 1, screenW, i * verGrid - 1,paint);}for (int i = 0; i < horNum; i++) {canvas.drawLine(i * horGrid - 1, 0, i * horGrid - 1, screenH,paint);}}}/**設置網格線參數**/public void setInf(int vergrid, int horgrid, int screenW, int screenH) {this.verGrid = vergrid;this.horGrid = horgrid;this.screenW = screenW;this.screenH = screenH;initOver = true;postInvalidate();}/**擦除網格線**/public void clearLine(){initOver = false;postInvalidate();} } 主程序代碼:

?

?

package com.example.test005;import layout.layout.ex.GridRelativeLayout; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button;public class MainActivity extends Activity { private GridRelativeLayout rl; private Button btnDraw,btnClear;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);rl=(GridRelativeLayout)findViewById(R.id.rl);btnDraw=(Button)findViewById(R.id.button1);btnClear=(Button)findViewById(R.id.button2);btnDraw.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {rl.setInf(100, 100, 1280, 720);//畫網格線}});btnClear.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {rl.clearLine();//擦除網格線}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);return true;}}

總結

以上是生活随笔為你收集整理的自定义布局RelativeLayout 画网格线的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。