您的位置:首页 > 移动开发 > Android开发

Android --------- 自己定义VIew

2017-08-01 09:21 316 查看
package com.example.coustomviewdemo;

import android.R.interpolator;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.FontMetrics;
import android.util.AttributeSet;
import android.view.View;

public class FightViewDemo extends View {

public FightViewDemo(Context context) {
super(context);
// TODO Auto-generated constructor stub
init(context,null);
}

public FightViewDemo(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
init( context,  attrs);
}

public FightViewDemo(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
// TODO Auto-generated constructor stub
init( context,  attrs);
}

private Paint paint;

private void init(Context context, AttributeSet attrs)
{
paint = new Paint();
paint.setColor(Color.RED);

}

@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);

//TODO 绘制文本

//		整个父控件 getHeight
int height = getHeight();
//		整个父控件 getWidth
int width = getWidth();

//		怎样获取组件自身的高度和宽度?
String text = "LoveHellOWorld";

FontMetrics metrics = paint.getFontMetrics();
int descent = (int)metrics.descent;

//		初始化 widths 长度为 text文本的字符的大小。
float[] widths = new float[text.length()];
//		获取一哥字符串 每个字符的像素宽度。
paint.getTextWidths(text, widths);

//		获取自身组件的长度
int myWidth=0;
for(int i=0;i<widths.length;i++)
{
myWidth+=widths[i];
}

//		获取自身组件的高度
int th = (int)paint.getTextSize();

int posX =(width-myWidth)/2;

int posY = height/2 + th/2 - descent;

//		话自己的文本内容:
canvas.drawText(text, posX, posY, paint);

//		标准line
canvas.drawLine(0, height/2, width, height/2, paint);
canvas.drawLine(width/2, 0, width/2, height, paint);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: