zoukankan      html  css  js  c++  java
  • android 自定义属性

    引用:http://blog.sina.com.cn/s/blog_652dd96d0100ueys.html

    1.先在res/values文件夹中新建一个attrs.xml文件
    <?xml version="1.0" encoding="utf-8"?> 
    <resources> 
        <declare-styleable name="MyView"
            <attr name="textColor" format="color" /> 
            <attr name="textSize" format="dimension" /> 
        </declare-styleable> 
    </resources>

    2.新建一个MyView.java。用来在屏幕上画一个矩形和一个字符串。
    package com.MyAndroid;

    import android.content.Context;
    import android.content.res.TypedArray;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.graphics.Paint.Style;
    import android.graphics.Rect;
    import android.util.AttributeSet;
    import android.view.View;

    public class MyView extends View{

        public Context mContext;
        public Paint mPaint;
       
        public MyView(Context context) {
            super(context);
            mContext = context;
        }

        public MyView(Context context, AttributeSet attrs) {
            super(context, attrs);
            mPaint = new Paint();
             //将MyView中attrs属性值放入a中
             TypedArray a = context.obtainStyledAttributes(attrs, 
                        R.styleable.MyView); 
                 
              int textColor = a.getColor(R.styleable.MyView_textColor,Color.RED); 
              float textSize = a.getDimension(R.styleable.MyView_textSize, 36); 
              //设置默认的字体大小   
              mPaint.setTextSize(textSize);
              //设置默认的画笔颜色 
              mPaint.setColor(textColor); 
              //最后一定要使用这个方法。将设置好的a返回给StyledAttributes,后面可以重新使用。
              a.recycle();     
        }

        @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
            mPaint.setStyle(Style.FILL); 
            canvas.drawRect(new Rect(10,10,100,100), mPaint);
           
            mPaint.setColor(Color.GREEN);
            canvas.drawText("丹", 110,110,mPaint);
        }

    三、将我们自定义的MyView 加入布局main.xml 文件中,平且使用自定义属性,自定义属性必须加上:

    xmlns:test ="http://schemas.android.com/apk/res/com.MyAndroid "蓝色 是自定义属性的前缀,红色 是我们包名.
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:test="http://schemas.android.com/apk/res/com.MyAndroid" 
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
    <com.MyAndroid.MyView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        test:textSize="20px" 
        test:textColor="#fff"   
    />
    </LinearLayout>

    4.运行效果
    Android自定义属性的学习


    还有就是当声明declare-styleable的时候,format可以有一下格式:

    • reference
    • string
    • color
    • dimension
    • boolean
    • integer
    • float
    • fraction
    • enum
    • flag

    转自http://ssd910.blog.163.com/blog/static/23876797201072504136476/
        http://blog.csdn.net/G_rrrr/archive/2009/11/24/4861290.aspx
    第二篇里还有android自带Button的实现代码,学习起来挺不错的。
    继续看贪吃蛇了。。吃啊吃,明天就可以吃粽子了~!

  • 相关阅读:
    HttpClient post封装
    UGUI 自动布局的重叠BUG
    什么时候必须使用UI相机? 多个相机的作用原理?
    UGUI BUG
    C# StopWatch的BUG????
    TrinityCore3.3.5编译过程-官方指导-踩坑总结
    C# unsafe模式内存操作深入探索
    C++提高编译与链接速度的资料
    C++复习笔记
    WOW研究资料收集
  • 原文地址:https://www.cnblogs.com/sode/p/2827775.html
Copyright © 2011-2022 走看看