100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > android自定义矩形框 Android 中自定义长方形

android自定义矩形框 Android 中自定义长方形

时间:2023-12-04 17:56:10

相关推荐

android自定义矩形框 Android 中自定义长方形

android 自定义控件有几种方式

今天是我第一次写博客,也是第一次学习写自定义控件,不足的地方望大家指正。

同时注意自定义控件的命名空间

下面是代码;

package com.example.changfangxing;

import android.os.Bundle;

import android.support.v7.app.ActionBarActivity;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Toast;

import com.example.view.ChFangX;

public class MainActivity extends ActionBarActivity {

private ChFangX mChFangX;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mChFangX = (ChFangX) findViewById(R.id.chfangx);

mChFangX.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

Toast.makeText(getApplicationContext(), mChFangX.getText(),

1000).show();

}

});

}

}

package com.example.view;

import android.content.Context;

import android.content.res.TypedArray;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

import android.util.AttributeSet;

import android.view.View;

import com.example.changfangxing.R;

/**

*

*

* @author Administrator

*

*/

public class ChFangX extends View {

// 每个边框的顏色

private int color_left;

private int color_top;

private int color_right;

private int color_bottom;

// 边框的有无

private boolean line_left;

private boolean line_top;

private boolean line_ritght;

private boolean line_bottom;

// 字

private String text;

// 画笔

// 左边线,上边,右边,底边线的画笔

private Paint pain_left, pain_top, pain_right, pain_bottom;

private Paint paintText;

private Float widths;

private Float heighs;

// 各边颜色直

public ChFangX(Context context) {

// TODO Auto-generated constructor stub

this(context, null);

}

public ChFangX(Context context, AttributeSet attrs) {

// TODO Auto-generated constructor stub

this(context, attrs, 0);

}

public ChFangX(Context context, AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

// TODO Auto-generated constructor stub

TypedArray a = context.obtainStyledAttributes(attrs,

R.styleable.changfx);

color_left = a.getColor(R.styleable.changfx_color_left, Color.BLUE);

color_top = a.getColor(R.styleable.changfx_color_top, Color.BLUE);

color_bottom = a.getColor(R.styleable.changfx_color_bottom, Color.BLUE);

color_right = a.getColor(R.styleable.changfx_color_right, Color.BLUE);

line_left = a.getBoolean(R.styleable.changfx_line_left, false);

line_top = a.getBoolean(R.styleable.changfx_line_top, false);

line_ritght = a.getBoolean(R.styleable.changfx_line_right, false);

line_bottom = a.getBoolean(R.styleable.changfx_line_bottom, false);

text = a.getString(R.styleable.changfx_titleText);

widths = a.getDimension(R.styleable.changfx_widths, 20);

heighs = a.getDimension(R.styleable.changfx_heights, 20);

pain_left = new Paint();

pain_top = new Paint();

pain_right = new Paint();

pain_bottom = new Paint();

paintText = new Paint();

a.recycle();

}

@Override

protected void onDraw(Canvas canvas) {

// TODO Auto-generated method stub

super.onDraw(canvas);

// 初始化画笔

pain_left.setColor(color_left);

pain_top.setColor(color_top);

pain_right.setColor(color_right);

pain_bottom.setColor(color_bottom);

paintText.setColor(Color.BLACK);

// 初始化一个矩形

// Rect mRect = new Rect(5, 5, 200, 100);

if (line_top)

canvas.drawLine(0, 0, widths, 0, pain_top);

if (line_ritght)

canvas.drawLine(widths, 0, widths, heighs, pain_right);

if (line_bottom)

canvas.drawLine(widths, heighs, -widths, heighs, pain_bottom);

if (line_left)

canvas.drawLine(0, heighs, 0, 0, pain_left);

canvas.drawText(text, widths / 2, heighs / 2, paintText);

}

public String getText() {

return text;

}

}

attr 属性文件

main_activity wenjian

xmlns:tools="/tools"

xmlns:custom="/apk/res/com.example.changfangxing"

android:layout_width="match_parent"

android:layout_height="match_parent" >

android:id="@+id/chfangx"

android:layout_width="200dp"

android:layout_height="50dp"

android:layout_marginTop="20dp"

custom:color_left="@android:color/holo_red_light"

custom:heights="50dp"

custom:line_bottom="false"

custom:line_left="true"

custom:line_right="true"

custom:line_top="true"

custom:titleText="ok"

custom:widths="200dp" />

代码贴完

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。