自定义view 属性

本文档介绍了如何在Android中创建一个名为GodvView的自定义视图,包括在attrs.xml中定义属性,在Java代码中解析这些属性,并在onDraw()方法中绘制视图的内容。示例代码详细展示了如何获取XML布局中的godv_title、godv_size、godv_src等属性,并用它们来设置文字和图像。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

例子sdk路径C:\Users\TANG\AppData\Local\Android\Sdk\platforms\android-30\data\res\values

attrs.xml  中参考属性   同时在as中增加同名xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="godvAtt">
        <attr name="gv_title" format="string" />
        <attr name="gv_size" format="dimension" />
        <attr name="gv_src" format="reference" />
    </declare-styleable>
</resources>

GodvView.java 

package com.example.godvlean;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.View;

import androidx.annotation.Nullable;

public class GodvView extends View {

    private float gvSize;
    private int gvNum;
    private Drawable gvSrc;
    private String gvTitle;
    private Paint paint;

    public GodvView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
       //通过控件方式来获取
        TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.godvAtt);
        gvSize = typedArray.getDimension(R.styleable.godvAtt_gv_size, 0f);
        gvSrc = typedArray.getDrawable(R.styleable.godvAtt_gv_src);
        gvTitle = typedArray.getString(R.styleable.godvAtt_gv_title);
        gvNum = typedArray.getInt(R.styleable.godvAtt_gv_text_num,0);

        typedArray.recycle(); // 因为源码中是进行回收的

        paint = new Paint();
        paint.setColor(Color.BLUE); //颜色
        paint.setTextSize(gvSize);//字体大小
        paint.setTypeface(Typeface.DEFAULT_BOLD);//粗体字
        paint.setAntiAlias(true);//消除锯齿
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        //画绿色背景
        canvas.drawColor(Color.GREEN);
        //画文本
        canvas.drawText(gvTitle, 10, 120, paint);
        //画图
        gvSrc.setBounds(20,20,100,100);
        gvSrc.draw(canvas);
    }
}

xml

    <com.example.godvlean.GodvView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        godv:gv_title="we1less"
        godv:gv_size="58dp"
        godv:gv_src="@mipmap/godv"
        godv:gv_text_num="2"/>

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值