栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

Android重写View并自定义属性实例分析

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android重写View并自定义属性实例分析

本文实例分析了Android重写View并自定义属性的方法。分享给大家供大家参考,具体如下:

这里通过自定义属性 实现如下图所示效果:

第一步:在resvalues的目录下新建一个文件attrs.xml

声明一些自定义属性



  
    
    
    
  


第二步:在layout目录下新建布局文件activity_main.xml

特别注意要在外层控件加上这个声明:

格式:xmlns:(你自定义名称)="http://schemas.android.com/apk/(你应用的包名)"

xmlns:xr="http://schemas.android.com/apk/res/com.rong.test"

或者

xmlns:xr="http://schemas.android.com/apk/res-auto"

推荐使用第二种

在布局文件中加入这些自定义的属性:



  


第三部继承View重写

package com.rong.activity;
import com.rong.test.R;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.view.View;

public class CustomView extends View {
  
  private Paint mPaint;
  
  private Rect mBounds;
  
  private String customText;
  
  private int customTextSize;
  
  private int customTextColor;
  public CustomView(Context context, AttributeSet attrs) {
    super(context, attrs);
    TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.CustomViewStyle);
    // 获取自定义文字
    customText = typedArray.getString(R.styleable.CustomViewStyle_customText);
    // 获取自定义文字大小
    customTextSize = typedArray.getDimensionPixelSize(R.styleable.CustomViewStyle_customTextSize, 28);
    // 或者自定义文字颜色
    customTextColor = typedArray.getColor(R.styleable.CustomViewStyle_customTextColor, Color.WHITE);
    // 要回收这个typedArray对象
    typedArray.recycle();
    initView();
  }
  public void initView() {
    // 初始化画笔
    mPaint = new Paint();
    mPaint.setAntiAlias(true);
    mPaint.setStyle(Paint.Style.FILL);
    mPaint.setColor(customTextColor);
    mPaint.setTextSize(customTextSize);
    // 生成文字区域
    mBounds = new Rect();
  }
  @Override
  protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    // 获取文字显示区域mBounds
    mPaint.getTextBounds(customText, 0, customText.length(), mBounds);
    //使文字宽居中显示=控件的宽度/2 -文字的宽度/2
    float helfWidth = getWidth() / 2 - mBounds.width() / 2;
    //使文字高居中显示=控件的宽度/2 +文字的宽度/2
    float helfHeight = getHeight() / 2+mBounds.height()/2;
    //绘制文字
    canvas.drawText(customText, helfWidth, helfHeight, mPaint);
  }
}

运行!

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android基本组件用法总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/163246.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号