定义自己的布局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 绘制网格线的更多相关文章
- Android相对布局(RelativeLayout)
Android相对布局(RelativeLayout) 备注:这里的视图和元素是等同的概念. RelativeLayout是一个允许子视图相对于其他兄弟视图或是父视图显示的视图组(通过ID指定).每个 ...
- Android 自学之相对布局 RelativeLayout
相对布局(RelativeLayout),相对布局容器内子组件的位置总是相对兄弟组件.父容器来决定的. RelativeLayout的XML属性及相关方法说明 XML属性 相关方法 说明 androi ...
- Android开发之布局--RelativeLayout布局
RelativeLayout 相对布局 true或false属性 Layout_centerHorizontal 当控件位于父控件的横向中间位置 Layout_centerVertical 当 ...
- Xamarin.Forms的相对布局RelativeLayout
Xamarin.Forms的相对布局RelativeLayout 相对布局RelativeLayout是App中常用的布局方式.它是以界面中的某个元素为基准,设置另外一个元素的位置和大小.通过这种 ...
- .Net程序猿玩转Android开发---(7)相对布局RelativeLayout
相对布局RelativeLayout是Android布局中一个比較经常使用的控件,使用该控件能够布局出适合各种屏幕分辨率的布局,RelativeLayout採用相对位置进行 ...
- [js] 渲染树构建、布局及绘制
渲染树构建.布局及绘制
- Android面试收集录12 View测量、布局及绘制原理
一.View绘制的流程框架 View的绘制是从上往下一层层迭代下来的.DecorView-->ViewGroup(--->ViewGroup)-->View ,按照这个流程从上往下, ...
- Android学习笔记(14):相对布局RelativeLayout
相对布局RelativeLayout,继承自ViewGroup.相对布局的子组件的位置总是相对于兄弟组件或者父容器决定的. RelativeLayout支持的XML属性: android:gravit ...
- android:布局、绘制、内存泄露、响应速度、listview和bitmap、线程优化以及一些优化的建议!
1.布局优化 首先删除布局中无用的控件和层级,其次有选择地使用性能较低的viewgroup,比如布局中既可以使用RelativeLayout和LinearLayout,那我们就采用LinearLayo ...
随机推荐
- 基于visual Studio2013解决C语言竞赛题之1019填数
题目 解决代码及点评 /* 19. 找3个数字,填在下面式子中,使等式成立. _6325 = 6325_ × ____ (等号左边是五位) 1,若答案有多个,则打印一组即 ...
- 深入理解maven与应用(二):灵活的构建
深入理解maven及应用(一):生命周期和插件 參考官方url:http://maven.apache.org/guides/index.html 一个优秀的构建系统必须足够灵活,应该可以让项目在不同 ...
- MyEclipse弹出提示窗体
MyEclipse弹出提示窗体 1.弹窗例如以下
- Swift - 使用CABasicAnimation实现动画效果
1,CABasicAnimation类只有三个属性: fromValue:开始值 toValue:结束值 Duration:动画的时间 2,通过animationWithKeyPath键值对的方式设置 ...
- java实现指定文件扫描目录
package com.miss.time1230.io; import java.io.File; import java.util.Scanner; /** * @author MISS * 描述 ...
- sum(case when then)(男女生的个数)
判断类似一个班级的男生和女生的人数,用sum (cese when then ) select count(er.execute_result), sum(case er.execute_result ...
- 基于visual Studio2013解决C语言竞赛题之1071打印工资
题目 解决代码及点评 /************************************************************************/ /* ...
- 十分钟开发一个调用Activity的PhoneGap插件
在HybridApp开发中,非常多业务我们是没有办法通过HTML5+js实现的,比方调用第三方的包括Activity的jar包,一些必须使用原生代码才干实现的功能,比方复杂的UI的效果,调用通讯相关的 ...
- Effective C++_笔记_条款01_视C++为一个语言联邦
(整理自Effctive C++,转载请注明.整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/) C++的各种能力和特性使它成为一个无可匹敌的工具,但也可能引发某 ...
- 计算机内存碎片(中)——外部碎片化(内存 & 文件系统 & 数据库系统通杀)
本文原创为freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/article/details/17252221 外部碎片化 当计算机内存被划分成很细碎 ...