定义自己的布局RelativeLayout 绘制网格线

在Android画线必须由一个载体,无论是控制,无论是布局。实际上它们是从继承View。由画线的方式自己的控制或布局的定义是最常见的。

以下是在其定义中的小样本实现RelativeLayout绘制网络格线

代码下载:http://download.csdn.net/detail/yxg190221/7589287

自己定义控件代码:

</pre><pre name="code" class="java">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);
	}

	@Override
	protected 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;
	@Override
	protected 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() {

			@Override
			public void onClick(View arg0) {
				rl.setInf(100, 100, 1280, 720);//画网格线
			}
		});
		btnClear.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View arg0) {
				rl.clearLine();//擦除网格线
			}
		});

	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

定义自己的布局RelativeLayout
绘制网格线

时间: 2024-11-03 22:21:30

定义自己的布局RelativeLayout 绘制网格线的相关文章

自定义布局RelativeLayout 画网格线

在Android中画线必须由一个载体,要么是一个控件,要么是一个布局,其实他们都是继承自View,通过自定义控件或布局的方式画线是最常见的.下面的小例子实现了在自定义RelativeLayout中画网格线 代码下载:http://download.csdn.net/detail/yxg190221/7589287 自定义控件代码: </pre><pre name="code" class="java">package layout.layou

【玩转D3.js】--(1)绘制网格线

我们常常使用常规图表(直方图,折线图等)来表现数据.为了清楚的表示数据在数轴上的哪个数值区间,会直接在矩形和点上标注数值. 除了这个办法外,还可以使用色调偏淡的网格作为背景参照. 本文介绍了如何使用D3绘制网格线的小技巧: 绘制效果: 思路很简单: 1 绘制SVG容器. 2 给SVG分组,并设置分组的样式类. 3 为分组分别添加横线和竖线. 关键技术介绍 (1) 生成一个10元素的数组: (2) 定义x和y比例尺 x = d3.scale.linear().domain([0,1]).range

代码布局relativeLayout

后台布局   在ANDROID 开发中有时候我们需要在后台添加布局文件这里我们来说一下后台添加RelativeLayout文件的方式: RelativeLayout,顾名思义,就是以“相对”位置/对齐为基础的布局方式.android.widget.RelativeLayout 有个 继承自android.view.ViewGroup.LayoutParams 的内嵌类 LayoutParams,使用这个类的实例调用 RelativeLayout.addView 就可以实现“相对布局”. 首先我们

面试一问:关于 View测量、布局及绘制原理

前言 2020年2月22.距离新年已经过去了大半个月了,依旧的出不了门,依旧的躲在家里一日三餐,依旧的在家办公,也不知道下周会不会复工,再次汇总手中各种保存整理的笔记 相关内容后续GitHub更新,想冲击金三银四的小伙伴可以找找看看,欢迎star(顺手留下GitHub链接,需要获取相关面试等内容的可以自己去找)https://github.com/xiangjiana/Android-MS(VX:mm14525201314) 一.View绘制的流程框架 View的绘制是从上往下一层层迭代下来的.

Android相对布局RelativeLayout详解

<TextView         android:id="@+id/firstview"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:background="#ff0000"         android:text="第一个Textview&q

安卓学习-界面-布局-RelativeLayout

RelativeLayout相对布局,所有内部的组件都是相对的 XML属性 XML属性 函数 说明 android:gravity setGravity 内部组件的对其方式 android:ignoreGravity setIgnoreGravity 设置哪个组件不受Gravity影响 RelativeLayout.LayoutParams用来设置内部组件的对齐方式 XML属性 说明 android:layout_centerHorizontal 水平居中 android:layout_cent

Android有感(14):相对布局RelativeLayout

相对布局RelativeLayout,继承自ViewGroup.相对布局的子组件的位置总是相对于兄弟组件或者父容器决定的. RelativeLayout支持的XML属性: android:gravity  setGravity(int):设置容器内子组件的对齐方式 android:ignoreGravity  setIgnoreGravity(int):设置哪个子组件不受gravity属性的影响 RelativeLayout有一个内部类RelativeLayout.LayoutParams来控制

.Net程序员玩转Android开发---(7)相对布局RelativeLayout

             相对布局RelativeLayout是Android布局中一个比较常用的控件,使用该控件可以布局出适合各种屏幕分辨率的布局,RelativeLayout采用相对位置进行控件属性设置. 可以设置控件与父控件的位置,控件与控件之间的位置. 1. 控件与父容器位置属性 android:layout_alignParentLeft="true"   子控件相对于父容器靠左边 android:layout_alignParentTop="true"

Android相对布局RelativeLayout各属性介绍

Android相对布局RelativeLayout各属性介绍 相对于兄弟元素android:layout_below="@id/xxx":在指定View的下方android:layout_above="@id/xxx":在指定View的上方android:layout_toLeftOf="@id/xxx":在指定View的左边android:layout_toRightOf="@id/xxx":在指定View的右边相对于父元素