View (二) 自定义属性

时间:2023-12-23 13:52:14
主要有三种方法可以实现自定义属性。
方法一:不使用命名空间,不使用attrs.xml文件。通过attrs.getAttributeResourceValue方法拿到属性值
方法二: 使用命名空间, 不使用attrs.xml文件。通过attrs.getAttributeResourceValue方法拿到属性值
方法三: 使用命名空间,   使用attrs.xml文件。通过context.obtainStyledAttributes(attrs,R.styleable.ImageTextView).getString()方法拿到属性值
第一种方法使用最简单,但获取的属性值多为字符串不能获取各种类型的值,第三种方法是用步骤多些,但可以获取各种类型的属性值,并且可以提供代码检错功能

第一种方法,直接设置属性值,通过attrs.getAttributeResourceValue拿到这个属性值。

(1)在xml文件中设置属性值

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
tools:context=".MainActivity">
<com.example.lenovo.custom_textview.ImageTextView1
android:id="@+id/itv"
iamgeBoolean="true"
iamgeColor="#00ff00"
iamgeDimension="100dp"
iamgeEnum1="enum2"
iamgeFlag="flag3"
iamgeFloat="0.8"
iamgeFraction="200%p"
iamgeInteger="100"
iamgeString="自定义属性"
imageReference="@drawable/trash"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>

(2)在构造函数中拿到这个值

package com.example.lenovo.custom_textview;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.widget.TextView; /**
* Created by lenovo on 2016/2/18.
*/
public class ImageTextView1 extends TextView {
public ImageTextView1(Context context) {
super(context);
}
public ImageTextView1(Context context, AttributeSet attrs) {
super(context, attrs);
//可以获取所有属性值的字符串表示,int,flat,boolea,reference,string 类型能获取准确值
String iamgeDimension = attrs.getAttributeValue(null, "iamgeDimension");
int imageReference = attrs.getAttributeResourceValue(null, "imageReference", 0);
if (imageReference > 0) {
bitmap = BitmapFactory.decodeResource(getResources(), imageReference);
}
String iamgeColor = attrs.getAttributeValue(null, "iamgeColor");
String iamgeString = attrs.getAttributeValue(null, "iamgeString");
int iamgeInteger = attrs.getAttributeIntValue(null, "iamgeInteger", 0);
float iamgeFloat = attrs.getAttributeFloatValue(null, "iamgeFloat", 0);
boolean iamgeBoolean = attrs.getAttributeBooleanValue(null, "iamgeBoolean", false);
String iamgeFraction = attrs.getAttributeValue(null, "iamgeFraction");
String iamgeEnum1 = attrs.getAttributeValue(null, "iamgeEnum1");
String iamgeFlag = attrs.getAttributeValue(null, "iamgeFlag"); StringBuffer str = new StringBuffer();
str.append("iamgeDimension= " + iamgeDimension + "\n");
str.append("imageReference= " + imageReference + "\n");
str.append("iamgeColor= " + iamgeColor + "\n");
str.append("iamgeBoolean= " + iamgeBoolean + "\n");
str.append("iamgeString= " + iamgeString + "\n");
str.append("iamgeInteger= " + iamgeInteger + "\n");
str.append("iamgeFloat= " + iamgeFloat + "\n");
str.append("iamgeFraction= " + iamgeFraction + "\n");
str.append("iamgeEnum1= " + iamgeEnum1 + "\n");
str.append("iamgeFlag= " + iamgeFlag + "\n");
setText(str.toString()); } public ImageTextView1(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
} private Bitmap bitmap; @Override
public void onDraw(Canvas canvas) {
if (bitmap != null) {
Rect src = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); Rect target = new Rect();
int textHeight = (int) getTextSize();
target.left = 0;
target.top = (int) (getMeasuredHeight() - getTextSize()) / 2 + 1;
target.bottom = target.top + textHeight;
target.right = (int) (textHeight * (bitmap.getWidth() / (float) bitmap.getHeight()));
canvas.drawBitmap(bitmap, src, target, getPaint());
canvas.translate(target.right + 2, 0);
} super.onDraw(canvas);
} }

结果:

aaarticlea/png;base64,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" alt="" />

第二种方法,使用自己的命名空间,通过attrs.getAttributeResourceValue拿到这个属性值。

(1)注意在xml文件中,需要声明一个命名空间,形式一般为为http:// + 这个view的包名(其实这个名字可以随便取名只要是个名字就行,只是一般遵循这个格式)如果为http://com.example.activity,注意的是xml 中的命名空间名字要和获取属性attrs.getAttributeValue(“http://com.example.activity”, "iamgeDimension")中的命名空间名字一样

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:mobile="http://com.example.activity"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
tools:context=".MainActivity">
<com.example.lenovo.custom_textview.ImageTextView2
android:layout_width="wrap_content"
android:layout_height="wrap_content"
mobile:iamgeBoolean="true"
mobile:iamgeColor="@color/material_blue_grey_800"
mobile:iamgeDimension="100dp"
mobile:iamgeEnum1="enum2"
mobile:iamgeFlag="flag3"
mobile:iamgeFloat="0.8"
mobile:iamgeFraction="200%p"
mobile:iamgeInteger="100"
mobile:iamgeString="自定义属性"
mobile:imageReference="@drawable/trash" />
</LinearLayout>

(2)通过attrs.getAttributeResourceValue,其中第一个参数为命名空间。

package com.example.lenovo.custom_textview;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.widget.TextView; /**
* Created by lenovo on 2016/2/18.
*/
public class ImageTextView2 extends TextView {
public ImageTextView2(Context context) {
super(context);
}
//命名空间
private final String namespace = "http://com.example.activity";
String tag = "ldq";
public ImageTextView2(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
} public ImageTextView2(Context context, AttributeSet attrs) {
super(context, attrs); //可以获取所有属性值的字符串表示,int,flat,boolea,reference,string 类型能获取准确值
String iamgeDimension = attrs.getAttributeValue(namespace, "iamgeDimension");
int imageReference = attrs.getAttributeResourceValue(namespace, "imageReference", 0);
if (imageReference > 0) {
bitmap = BitmapFactory.decodeResource(getResources(), imageReference);
}
String iamgeColor = attrs.getAttributeValue(namespace, "iamgeColor");
String iamgeString = attrs.getAttributeValue(namespace, "iamgeString");
int iamgeInteger = attrs.getAttributeIntValue(namespace, "iamgeInteger", 0);
float iamgeFloat = attrs.getAttributeFloatValue(namespace, "iamgeFloat", 0);
boolean iamgeBoolean = attrs.getAttributeBooleanValue(namespace, "iamgeBoolean", false);
String iamgeFraction = attrs.getAttributeValue(namespace, "iamgeFraction");
String iamgeEnum1 = attrs.getAttributeValue(namespace, "iamgeEnum1");
String iamgeFlag = attrs.getAttributeValue(namespace, "iamgeFlag"); StringBuffer str = new StringBuffer();
str.append("iamgeDimension= " + iamgeDimension + "\n");
str.append("imageReference= " + imageReference + "\n");
str.append("iamgeColor= " + iamgeColor + "\n");
str.append("iamgeBoolean= " + iamgeBoolean + "\n");
str.append("iamgeString= " + iamgeString + "\n");
str.append("iamgeInteger= " + iamgeInteger + "\n");
str.append("iamgeFloat= " + iamgeFloat + "\n");
str.append("iamgeFraction= " + iamgeFraction + "\n");
str.append("iamgeEnum1= " + iamgeEnum1 + "\n");
str.append("iamgeFlag= " + iamgeFlag + "\n");
setText(str.toString());
} private Bitmap bitmap; @Override
public void onDraw(Canvas canvas) {
if (bitmap != null) {
Rect src = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); Rect target = new Rect();
int textHeight = (int) getTextSize();
target.left = 0;
target.top = (int) (getMeasuredHeight() - getTextSize()) / 2 + 1;
target.bottom = target.top + textHeight;
target.right = (int) (textHeight * (bitmap.getWidth() / (float) bitmap.getHeight()));
canvas.drawBitmap(bitmap, src, target, getPaint());
canvas.translate(target.right + 2, 0);
} super.onDraw(canvas);
}
}

结果:

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAANUAAACWCAIAAADG7loWAAAgAElEQVR4nO19Z3PjaJfd/tx1lav8Ydd22WXv+vW+YUJPZ+UsSsw5kyDAnEASBECCCcw5K2dPlT+cHZhW92h63laL6h6ibqkoiQQB4vDB89xzz7n/cLvYFtv8tn+Y9wEstj/0tsDfYpvntsDfYpvntsDfYpvntsDfYpvntsDfYpvntsDfYpvntsDfYpvntsDfYpvntsDfYpvntsDfYpvn9kn4u7q5Pb5cxCL+nngE/Anju/8Q+PmfI4tYxO+Lf/T/nB/ffS7+uOHdv9I/86O7j8Twju3f8MOP/evvCm5wy/Zv2P4NP7zFX9jBDffL48+Nxztabnj7/45qeJvuXbP963/f8/CO7V+ne1f3DjvVuaSbZ/xjncvXEP8j/jM3fAz8/Snxszi9+zC49omDzvOd04/+9/dGcXzjTpUOnWGVJ26JZNjWcWlySzAiXRmWJrefv3+hf2GP54T+xefsJDe4DOXblkgmXh6I07vC6NqTLiuJmMoTpyvD4vgmXh5oqISSiLlTpcLoWnohxVXNYT4/vHqUz+qriD8lvjD+sr1zf7Yh9C9Kk9vc4FLoX+ATL4yu88MroX+RH17lh1e5wWVucImX4O+5wSWeiRfmBpfF8U1ucHngCG0ZSYIRVZ64zB7M9s6DuVa6eYT/IgqjazwAKKV/Fcc3pckt3lE6ktn/5gaXJFspjK6lP84erXSQpcltcXyD+BD3JFuR2YMvdrSuZFGc3iWqo1WN05koqEl6z+pP1ScKd1ThjrqSxU2DJ1rqSSdoDvMHjhDOXTqkuUPk68ZfojqSuyLJ2jhc6GwaPEtKm8weTDePrNHshp5YUTuWVXYlEVtRO1bUjpjY5zunSiK2rLKv69wye5BtHXv52paRXFbZDYE02zqWuyKmEFea3DKN6arGGRCaGirhzzYCQnNF7VjXud8emhXuKB540uXc4NKTLq/r3KsapzWaZRpTuSuybaLeK6yHzjDfOTWHeRyGPZ5L1Scye5DvnPoy9S0juaS0KdzRdPMIWFnXud8rrAGhybaO3amSK1l0p0oxsX8PgtneeaI6WlE7XMliaXJLcdVNgyc/vIqJ/dcyY0BobuiJgNAU+hdyV8QezyWqo20TtaJ2vNo37NsCydp4WWXfMpLv5Ba9n/m2h8Mvjr9oqbeidoQLHZKt2GKCJ11+uaf3ZxtyVwT3oxW1Y9tEMY3pjtlrDvPuVGnLSEZLPWei8E5uCRc6bw/NxiBLMOKyyu7L1A+dYVOIE6d3Qv9i3xawx3NbRtKVLOIJydpY4Y6+lhmTtbHWmzxwhCLF7rrObY1mnYnC20Ozl6+9V1jdqVJAaK5qnF6+9k5uMQZZT7psjWbDhc5rmTEm9rHPRHW0Y/YaAmmtN7midqTqE7kroqESMbGv8sSVRExN0l6+9uEQmO2dr2ldwJ87Vdq3BYrjG6YxfbVv8PK1DT0RKXbzwyutN2kKcbg1J2tjuSuyZ/XTleF3G8pgruXPNl7LjKn6ZO4o+erxFy31fJm6wh1VeeJ/W1cQjKgmaVtMyA0u5a6IkogVxzcqT1zrTRoCaYU7mhtcRku9Na3LnSr9ZfVw3xZQuKOrGqc/25jF347Z60wUtoykM1Eg2cquxVcYXTvo/KrGWRzfuJLFPavfy9e+21Du2wKHzjB2uGUk4+UB05humyiSrVij2V2LT+6KUFyVrgwBkW0TlaiOxOmdMcju2wJqkj5whIrjG8AlXh7o/YzOl9L7Gb/QeBh/BCPuWnwS/nyZ+rrODfxpqIQhkN40eEi2UprcWqPZA0eIrgxf7un5zmlucPleYQ3l23NHyVePv2CutWvxab3JSLH7Wmb8NfzpfCl7PLdvC7Ct44DQXFLafJn6j9sajEz+bCPdPDp0hg2BdH545c82lpS2eHnwIf7WtC6sVPas/mCu9fbQbI/nwoVOQGjGy4NtExUvD9LNo20T5aDzlkjGn20YAukds9eXqb/aN4Ty7U2Dx59tZHvnSiKmcEcxlEr4S9UnDjrvoPPORCFa6n141rP4C+ZaK2pHpnvmy9SXVfZoqYf5K9853bcFnImCzB40h3mhf2EMsjJ7kK4Mf9zWpOqTVH3y9tBMV4ZzR8lXjD9c73Chg0nentX//aaKYERDIO1MFHKDS603qfOliuMbQyBtDvOJ6mjT4Nmz+te0rp92dXRlqPUmNw0elScud0ViYl/hjq6oHQeO0IraYYsJhdH1gSNEMKIvU5e7IoXRtTTekGxFScTSzSOVJ75lJJVE7NAZjol9jDFs6/jQGfaky/u2wIEjhJ+hfHtF7WBbx8Ygu2Uk5a7Ihp4I5lrWaFZN0sXxjT2e0/sZrAx+bf0B/O1afJ50WZzece2TTYPnwBFa07oMgXRucGmJZDb0xKEzvKEn0s0jX6a+onYcOsNvD81yV4SuDP/lzbbMHtwxe3ctvs9cjD/z+OL4yw0u4+VBbnCZ7Z1TXDUgNMOFDtc+STePuPYJlhGY4jCNKdOYCv0L3BOxCuHaJ7nBZUBoetLlZG1cGF0nqiPsh2lMsThNVEdc+wSz/tLklu+cIvHBd06TtXFpcpvtnfsydYqrpuqT/PAqUR1hYZuojjLdM659QnFViquyrePc4DJS7GK1G8q3SbaSrI2L4xu2dZysjcXpHds6ZhrT38z1IMmCrBPO0ZMuB3MtgAlnRLKVVH2CpXS01KO4arjQSdbGTGP647aGYESSrbCt47lD5OvG3+8Nrn2i86UOHKEds9cSyXzzCYiPfgJrWlemezb3I3mCeHb4w2gREJrRUu/bTj38WhRG1/Hy4A/yxfvi+CtNbmdT/J8fxfENEsi/doWK4xuufZLpnj0KI/J7A6nv2WPDHVb6FQcvHRsS3dITpPS49ARMBqREOv6bH14VRtfY8+yv0j7vHcDsf59VPAX/QXHVx7qbFMc3vkxd72fMYR6Z2w8/1oDQ3DKS9njucXH/KZFuHtnjOVOIcyYK2d55cXyTbh6RbCWYa+E4Y2LfGs2aw3ww1yqMroX+BcGIxiBriwl857Q4vgkXOuYwb41mwYuk6hNrNGsKcRRXFfoX4ULHEslYIhlTiLNEMtneebTUMwZZ7CHdPMIxuJLFgNDE3SM3uPRl6g46z7VP5o62OeCP75wSjMi1T/BNBetVHN9I9BdQBSJO+jU3uJz9TmNQAU+1bwusqB1Iy20aPNneucRf4YuOVB8WN7OjUXF8I40lH/4d7zh7PLOHJxFxDwTyeVtG0hrNvldYsbxQeeKvZcY9qx/7XNe5VZ643s+s69xYSK2oHeYwv6pxWiKZVH2yafCoSVrhjm6bqHTzCKtyc5hfUtoCQhO0sjnM75i9bw5M2d65mqRXNU6dLwVqh++cYi3v5Wv54VV+dGWP5zYNHnOYfywK/ivDH9OY6v1Msja2RDL7tsCuxbdlJFWe+I7Zu2P2puqTTPfMGGT3rP4dszdc6GS6Z3o/g9SDyhPn2iehfBvLEXOY59onEv9GV4Y/7epiYh8Ew67FRzBiuND5YUuNjCNdGSqJ2K7Fp6ESXPvEEsngcSjfVhKxHbMX2Rl3qnTgCO1Z/VtGkq4MmcZUScS2TdSe1Z+ojtjWsd7P7Fn9h85wojpiGlOCEZ2JgjNRiJcHs6NvfngFyqQ4vpHZg7aYkOmexcsDrTcpswcBYl+mjnX6psETEJqGQFpN0uBIQIps6IlwoRPMtTYNnkR15M82Mt2zTPdsXef2pMt4u/zwSu6K2GJCaXKLzDwoQexnRe0g2QoKHZK18arGaQikg7lWtnc+d7TNAX/RUm9V4wzmWntWv8IdjYn99worHoByRYbPy9fkrojcFSEYcctI+rMNW0x4r7BGil0wvwQjrmld/mxDZg/u2wIg4kCgrevc9njOHOa3jGRM7K9pXXo/w7VP9qx+JREj2QpoEmAoXh7s2wJgO3YtPksko/LE96z+aKmHcQJJYJSo4NctI0myFbkroibpmNjX+xk1SatJOiA0781BMSuNiX0UFojTu9Lk1hzmgT8Jo6sa557VzzSm4N/EyV0w11pW2fnOqcweBBWucEdxB/BnG+s695rWJRFxyGAjdyOzB98cmFbUjjWtK14eHDrD320o96z+JaWNZCsBofm/3u1u6IlNg+fQGZYqPJ5PPB3/gSGhOL7ZNlH47m4ZSVOISzePcEXxKc/yb6saJ8GIf1k9PHCEVJ44+N8ds/e7DeWyyv6X1cOA0HTQ+R+3NYfO8KEzDGIDrEa6efRq37BlJNUkvaZ1gVZxJgp85/TtoXnT4NFQiQ09YQ7zKk/cGGSL4xtQ0jJ70B7PidM7oX+RrI13Lb43ByY1Se9afEoilqiOnImCLSbYYgKmaLMnW5rc4iUOOi8V70j4wzwhUuxqvck1rSta6v07/qb/jj+6MtwykjpfCpUy6eYRspXGIIv7L2YOCnfUFOKwf659wndO082jPavfHOb3rH41SQv9C50vtWvxuVOl1zJjojqiK8P3CuszpFKeFH/2eK44vtkxe+3xHPBnDLKuZHFJaYuWeno/s6EnLJEMqqrChc6yyu7la99vqiT2DNUrphCX7Z1juHIli28PzQQjhvLtcKGT7Z0Df1z75J3covUmQ/l2QGiisMWVLGZ758squ5qk8fdkbayhErihY4QDv1ya3MbLg4DQlNmDW0YylG8Hc614eRAvD4xBVkMlNFQimGvdG/+k8hxppJnFH9c+MQZZ3E/XtC4vXzMGWYU7Whzf2GLCpsHjSZd3zN508yhZG2+bKIqrmkIcps740mJwXdO6IsUuviH4puUGl0oihjoJDZUojm/MYX7X4vPytSWlLVWfsK3jZZU9JvbnDrinxl9M7K/r3MFcS+6KOOh8cXyDcag0ud2z+k0hzsvXXsuMMnvwvcK6qnHiPrhvC6zr3C/39PHyQOWJb5solSeuJulEdaQkYpZIpjS5DQjNZZXdn21g8qckYsYgm+2dY//F8Y0lksF8X0nEoqWe3BVxp0rg0NZ1biURk7siwVxL72ewQ6wMPOnymtalJGIbesKTLuP+joo9lLpIce9MC6NrrTf51zX5vi2g8sRxjqgqOHSGi+ObbO98x+yV2YOHzvCWkUzWxqD7Dp3hJYXNmSgka2M8QWYP7ln9qOXBqaGGqDC6xoANfGPFs22i5K7Ius4dyrdRtCF3RVbUDneqxHdOUWy2a/HtmL3PcAr4FPxbTOxj0o01KR6I0zu6MsQtJphrkWwFH19ucOnPNhx0Xk3SS0pbunmU6Z75sw2SrcTLg/zwKlkbI9FQGF1jvZJuHnn5mpevpeqT4vhG2r/QvwCHFil2c4PLRHWENWBucIl6sHChI/QvmMYUO0zVJzieSLGL/2IGFi8PMJd6OIuEwYniqv5sw59tgAMUp3ds6xilNOL0jmlMvXxNovUKo+tIsQtqDgvzZG1McVUvXwPLx7VPfJk6zh3ZgGRtPEvKZbpnoPKQssYx4MNEQoBrn+DDwTk+t3gK/gNDhTRgzI4c0r+KkxuMFkxjqvOltN7kntWv9zPF0Y34SwpXevKHu5rN8d7b/+wLP/r3Xzvm2f8+/OR7r/pwgPzwre8B94EnfMqh3nvChzt8nsln8Xnyb4nqiGBEKYO6iG84ngJ/j05lSvKLX3u7R2E+fu+w8Ynflscdij46NH70w/koKfe41+UTT3/2SP6U+Dndv7m+vv5S+EPt0yPOfDHtA0n1oewN9Z5ab/JzQF8YXTONKda8KNn6zZcI/QsoRR5+WrZ3Hsq3P/3YZmVZHw2k2e99CNFSzxzmZ2er4C2hh0Ika2PoaR7runxK4OZmjWat0Sy403+J3eqjhWw2e3Nz80Xwx7aOzWE+3TxC9ivTPZtVlGW6Z+DBsr1zSa5WGF3j7xLvjvJBfNcprrqktCmJGCo6UZYn7bk0uXUliytqB54s9C/wQnFGcffwCJQfXlFcVWYPyl0RhTuK4laAQDow6aJmumfYYaZ79ubAhHUGzguonWUdS5NbT7qs9SYLo2uQvzg2HDwOEseMcymMru3xnDHIYlfY7T31oD2e82cbGFGkg/HytT2rfxZbhdE1Siqlzzlc6GANDjpU/CV5fu+N7kVhdI094HSgCcRlkq4RTln8Rbg4+2mzreMtI7lr8cnswVWNM9M9+yfyaEnv/bL4s0azXPsEjILKEzeFOL5ziuJkVDWbwzyyIag/tUQy+JcpxIHCAiXqShbBbyI/lxtcGoMsBgA1SSuJGLJlrmRxWWUvjK69fA3V8yi0diWLCncU3D/BiO5UyZMu3xuxcGHkrki8PAjmWhRXjYl9DZWIlnpc+wTHqfLEQRuCO1F54pFil++cvpYZ6cowVZ/ofCmkctLNo2ipB5kSFrC7Fl8w10pUR1hjHTrDej+j9zMyexC5oVC+DWmwPZ6LFLsQxUVLPciplETMGs1me+cOOo/HOB2+c2qLCSpPXOGOxssDUDv38GcKca9lRpUnfugM05Uh5IhxceBJlzEUWaPZmNhPVEd4I0skc6/0Oje4BDugJGK2mMC1T/R+BkxSuNDBNSIYEVxrbnBJV4aQWEh7oCvDDT2B03mxo42XB//R3guI418D3yPgD/nnSLFLMKLezxCM+E5uCeZayGxRXPWd3LKhJ6DKscdzkIe5UyW9n3kntyB9qCETDjqPp0GFJH29Mt2zA0dIQyW8fA0lqw46v6yyx8uDdZ3bEskQjLhtonyZOihmHIncFTl0hpVELFLs3uNwjUGWZCskWwGmrdEsyVYg9YAoROWJGwJpB52HbsgQSO9afHRl+FpmjBS7Ol/q0Bn2ZeoyexAwerVvcCWLme5ZKN/es/oz3TMvX1vVON2pks6X+mFLbY/n7PHce4WVa59Yo1lLJGOP5zb0BMlW9m0BMG+HzjC+gdsmypMubxnJPasffLEpxNGVocId9aTLUOZDCnMPf8Yg+15hhUrhwBEKCM1Ngydc6Bw4QhRXLY5voE8FQN2p0prWRXHV2UtJMCIYKTVJg+p8c2CCGnBV49R6k6h1oLgqZC7Ih8/OXrK9c6jAVjXOLSOZbh79B0s73jx7AFqPg7+Y2EcKet8W+PPKgSddVpO0NZrNDS7xyRbHN0oipvOlTCFO7opI/JsnXf7zysGWkZTZg6/2DeDXgT/xl+J+8AFgGvZtAXOYX1bZwSNL3ADqZRx0vjS5jZZ69njOFhMcdB4sqnS0QHO8PFC4o75M3Z0qGYMsuBklEdP7GTwHTzAE0pjQbBlJZNEBO4jZoDYyBtltE4Ubk4ZKuJLF4vjGy9dQoRPKt98rrOAnXu0bmMaU4qqofnixoyXZis6X2rcFUvXJq33DitohswffHpptMWHH7HWnShKHBA7zwBF6r7CuaV2edPlD/FkiGYU7Kk7vYmL/ndwCVXK40JHZg8Dfitqh86XeK6zLKjveyBzmZy8lbib54RVOMyb2cWXj5cGfVw62TdS+LQD1oMIdBWN5T5wKla2apDVUYl3njpcH/2h+EvwFc619W0DnS9GV4ZsD0wP6S0skc+AIYZ6+rLKTbOWHLbUzUYgUu/5sI1WfAGEoZzIGWZAZKAXANbBEMnjhhp5I1sbZ3jlKmPZtAUkQibFQZg+GC53ZD4jvnGJcgdbJGs3aYkJAaJpCHDg3aEFiYl9JxLDKQbUBtLr+bOPAEQIyPOnysspuCnHQEKWbR9AWidM7FFtw7ZNwobOktDGNKdc+ebVvgO7YQeeDudaqxinhj2lMl5Q2QyANEjJVn+xafEA58OdOlUCvgcP8NfyBhvFl6u/kFi9fk/BHMGJ+eLWktOHlOl8qUuzijWYvpYZKwJ6B4qr7tgDwR1eGEOw5EwVoFPnOqSdd/mlXt2P2YnYuzW1Q15NuHqWbR0tKm5ev/Ud7j8r3v+D6d5b/3dATSiL21zU5zCg+qr+EXFzuiuxafK/2DfHyAKpsvZ8xBlm2dUxx1TWtS03SEKdBirtj9mq9SXz0zkRhWWVnGtM9q19mD4K+ixS74H8fXnxkumcA5Z7VL3dFwASi1MWfbaxpXVpvcsfstUazvkx9Q0+oSVpmDyrc0VR9AuE69PBab3LLSJrDvIPO71p82d45yVb0fgYzqgfwh8KzA0cIEiR7PAfLBJ0vtWUk9X7GEEgnqqNZ/BkCaU+6/GrfoPLEVzVOjP0fvf/+tKvTepPLKjuK0FCko6ES+Dz/uia3xQTokaFunkWPOL0LFzoraofKE980eDb0hIS//PAKRYe4fWW6Z0xj+tOu7sOKGxQ4gsxc1ThT9ck/U8dLBq8gCF9q/YFKgmzvPFWf2OM5V7IIWVeiOoJpS7w8wPw3UR0la+Pc4NLL17AEea+wMo0pzC4cdD6Ub6PWPJRvY1dIPfCdU4qrYtjIDS7TzSPUGydrY3eq5EwUYmIfNNpvphvywytTiDOH+YDQdKdK/myDYETsNj+8CgotB5338jWsZ0P5toPOE4zIto4Lo2twaNneuZev4Wk4mJjYR9kVxVWBfr5zSleGWAJLJ+XL1PPDq3h5gFPz8jW2dQz3JkjpcI4w04FRCb7eqfoEokEHnYcykGufREs9ghE3DZ5VjXNV41S4o9FSD19OghEz3TPUTmNgxjt60mVU01BcFRPxgNDcNlHYA0rXPOkyblCoH8Mng1WmO1VCmUhhdJ1uHu1Z/K5kUehf7Fn92AOG25jYR/UkfEv+JXZrTpSLxeKXwt9sfEpGN9080vlSGiqB+lOpiul3cVa/+fcHjhA+GOYwD0+ZeyX+Dx/Grz0NWZVPTFA/wJ49cC4ffraYpyKkO+lHL8GHbCHeSOhf0JUh9pCsjZO1scoTR423OczfS9BIr8oNLlGxi/FF2gNdGUruTdLb/SnxMzu4vbq6+jVozYd/86TLAaE5r3oNrn3iSZdNIc6VLH7zCtzfdWnoyhA3hAdU8RC1fFSa82E8O/53EX+o+OL4E/oXjziSQSFmiwn2eC4gND+loDxRHcH14hE/tWcrZ/zq4ovjDzlV3MVAGc2qzjAr+lD/hl+lyyzxZrnBpcIdXVbZVZ74mtal8sSluvZZqgd7xhshjwMydPZppV/8MDEdkTix32TlM90zU4hDxgc8GA5V/P+VtvcOaRFzw58zUeDaJ0xjiiwaiuADQtMc5pFQIBhR601CNJQfXuFXU4hz0HksnE0hTutNQgwmd0WQyHDQ+beHZqyvkS8AJiB1U5M0Xh7MtZaUNkzGDYG03s+ECx1Yruj9DHbLd07dqZI5zOt8KQedzw0uU/VJuNDBem12rlOa3JJs5cWO9tAZBtEEIyWSrWR75xA7s61j6b1+V7XBHzCeSP+BKl+5K2KNZl/tG8CxQvr6Yke7rLJbIpl3coszUfBnGytqBxZQSIltmyiZPWgIpNe0rnChA/2vIZBeUtqQFNjQEzDRgq+ewh3dMpK2mLCssttiAmzakrUxTLSwfKMrQ4BPQyVey4yhfHtJads2UcYg+1pmDBc6Djq/bwsg+XcviRoQmi/39ODuvttQHjhC8HKlK0PoNki2smnwKIkY3ut5Fh4/k3g6/0nIeLdN1P9e2pf4N6F/cegMy12RWf7t0BkW+hdg30m28ueVg3Wde9tEfbehJBgRsnNnonDoDIPw3TZRMNzYtwUMgfR7hRXaR1tMABu2pLRRXPWva3IkTuEu6koWoTL50/s9WPx6+VqmewZWN5hrgZaFeH72jLK98y0j6U6VQEugyGAWf4ZAeva9oBVaxDzxB/JX5YmH8u3XMiPw91H+zRzmgT9k2z3p8vebKksk48vUPekyHHAhl4yJ/Zd7eowxbOsY1BnGRSgjwTihXotkKy/39EiretJlFGLgvvn9poriqtsmCoaTmwYPwYi2mLBr8e1afAp3VFJvfIg/mAWiSAKJdJAHs+/1bRv4fQX4g0v4vi0gswctkcx3G0pXsqihEsAfTHmL4xs1Sev9TDDXgiwXNs7RUg8CMHeqZIlkkrUxvBDcqRJEX+FCB/dNU4jbMXshqkUFx7rO7UwUIJPDyKTzpZyJgj2ei5Z6kLVrqMRfVg+hUQf+IHyUHPQ/NKEX+heobYkUu6saJxwBQc3pfKk3ByaSrcy+1x/ESe2Z4g8FeRgkUNSp86ViYh8Oa4XRtS9T92cbmFeBzwFnCgN7uFOqPHGoKjPdM1QP7NsCWm8S9pKYTR46w9L6Q+dL7Vn9KJVjW8cOOg9qS+6K4I4Mwgp2HDpfChlvpjHF6uce73kviuObgNBUuKOhfNudKmGRS7IV+CtYIpl082j2vRYqlnni796V+818BNs61vlSSiK2ZSQPnWGpkvbhtMiH4oaPvte9/Xyiqu0Tz+VD3mwuAouvK54d/1EYXcfEvoPOe9Ll52nZtIhHjGeHP8QD8rYnDqF/AWupj/6Xa5/8mq8exCL3/pjpniVr40R1NBvg6TFzkBh6vnP6R5g4PoX/AewHHuuI0V3NlSyickn84MYHju7zV52p+iQm9nW+lMweDOXbMbGfrI3B1njSZVRQ75i9G3oCfCA8J8XpXbZ3XhhdI8WIZlqQX5UmtyhVPHCEpEChIfJHphAXKXYT1VGk2LVGswQjzh0fXzqewn8S/If4y6gm0V8SW3Vvuoa/wxFBgpSkYcNV1/uZXYsPRkTo9CftBwomeH3c23PxwaYJs1Ec32waPCh9Rck4HsfLA7gH6f2MLSaYw7whkMYDrLLF6Z0lkkGKB0XC/mwDCSPYCP24rXknt7yTW94emt8eml/u6aHwCOXbG3oChf4HjhBSP9FS79uehDwF/typUqZ7hgeGQBqFmdFSD5QX6kZNIc4WEzByoN7dmSjgmWzr2JUsYmzgO6coPgODt2P2etLlH7c1SiLGNKZo8RXKt63RLN859WcbUhkVRI3ORAHvCCsZLK5T9QnfOb2HyMLo+tW+AXwMAo2WQvk2lHXWaBZGaUibGwJpaamLFTrTmIYLnXTzSOGOQndSHN/sWnzLKvs7ueW1zPiX1cPvN1Xfb9oP6gYAABp0SURBVKq03mS6ebRr8b2TW1bUjh+21Ksa5/ebqpd7epk9iOTA3IHyteIPfmHo5yZ3RSyRzNtDMwQWK2qHKcT9tKtbUTsskQzasoXy7VWNU+9n9m2Bd3ILRhHoFKV6cTQ8iol9tnUcyrdf7Gg1VCJc6LzaN8jsQV+mjlJ46KyMQRaqLRB05jD/ck+v86Xi5QHunh+tpiyMrr/fVK2oHZsGD2JV43xzYEI3LKF/gX5xB44Q6t1nNfYo+nUmCoXRdbTUW9e5MS7C+ws6hF2L79+WZci9e/ka3zld1Th3zF6IL5nGVEMloGL8thfRT8e/wSlb72e+31Td499m9W8S/wH+jeKqf1tXQHv2at+AEgRbTEDDSOga13VuX6aORlzJ2phrn7zY0eLCO+i80L/Ay8HClSa3QDPazkBqGS317i13CqPrl3t6lNEjHHQe45/4yzQARrzQOs261ZQmt/gWuVMlWKxKjV53Lb5tE/VaZtw2UX96v7dr8eG7J/QvrNEsNJQY7JeUNrRNXPQffAT8QVZ96Aw76PyLHe0D/Bv4X6xaoL/865ocZAkuhiddhnzBHs+9OTAla2MJfzCUnsUf8sNANrrJSfhL1SeQTCuJGMaqe/h7saNFthwhd0WWVXbgj20d71p8rmTRmSi8OTDBBnO2xhE16H96v7euc0v1B4XR9ZLStmP2vldYX+0b/tuLtVf7hreHZixT+M4pPC1D+Tbwt6Z12WIC05jOHSVfMf4gToaSRU3SFFf9YUvtTpU0VMIezwEcs/ybP9uA9NoYZCH9X9e5oYvDvA0kL1aXaNC1baIskQyYulkt2abBA/ypSdoYZNHDMlzovJNb1CSdG1xy7RNofD4sj8X8D4bmCJiThvJteICgp6aGSmwaPLAkhIcGfDBItoL79Tu5BR7DxfFNsjb+aVcHVTx06TCiPHCEYF0P/EE/Bj9TKSPzrcYXx1+6eWQO82hphMaCclcE9o9IoKDRGS6qL1MX+hemELehJ9a0rjcHJqYxjZcH6HluiwlC/wIu2+s696EzDNk5KllQNIWhUetNwvcDFB/uj5hKbhnJH7bUhkD64XlVYXT9065uTevaNlEINJ+G4+WBI2SLCXBoeC0zwilGQyWQ20NjQYyIwVxr20TtmL0w/cBjlSd+4Ahh4vFeYYVUh++c6nwpiqvChAC9tDVUAh/O3IHyteJvNj4lqwybFXSi37P6pXzsbMn7h7/+5m5Lk9tIsav3M7i1fbRp9L1DxbJd6jeEBTXbOs4PrwJCE7Y9+F5hEin1ViDZCrI/2BUUmaF8O1kbR0s9lLsiN8S2jlHag7dA/8FwoSNNOjGvmDtKvhH8fUrkBpfw3Ua1yyOeKtOYWqNZtFL/tm9qX1E8Gv7+F/1/JElHpnd+ryPZ7woYe32JvAOswb7h29lXF4+Gv/8WvAjm2xRf0/sZBRFD4R0IK/x8rCPmO6cfpQQ+p5jlUwI0mjQfgMsCvA3E6R0SRqF8+3m2WXu28Wj4+8/eE/SyN/8Slmg2mGthHfBYKm74KNpiwod/J9nKvULlR4yA0DxwhGB6Ik7v0E0ESgCSreQGl+j3grXFM2xz8Gzj0fD3X/2nrmTRGOKgW9MH0pZoNlzscu0TGI5kumfg35CqjZcHBCOCHAsXOiDcIJrEr45E3p9twOHPnSqZQlxM7ONKGwJpTOrhj4auB0jX8Z1TpjG1xQRLJIMWBlCpoaAL3p1o/OLL1IujG7RaQB4bI6tkXSoFHEU1VGJJaUP+hWQrWwYS5ixgd9BjjK4Mt01UMNea+3X9WuIxxz+CETHy+bMNODTiDrVlJMG/QSoGfYbKE9/QE9Zo9rXMuK5z22LCitpBMCI8FQ2BtNwVWVLaEtURapsNgfSO2RsvD4C/mNh/tW/QepNyVwTl+K9lRg2VSNUne1a/1ptEjgOAOHSGjUH2xY42XOg4E4Vdiw/N4tBEbklps8dznnR5SWlD1vfDwpPC6Bo+f9BT2uO5Q2cYa2o43qEhG+ShnnR57tf1a4nHxJ+HrVhjgiWaDeXbxiDrTBaDuRZotJjYpytDV7LoTpV+2tXBXRQe2SjKR09HNPY9cIT4zil6A3n52o/bGgyT7xVWL1/TepOGQBrsSLp5FBCaa1pXKN/eMpDuVCkgNN8emtGEF1aNL/f0bOs42zvHy6GqdKdKaA23Z/WDZs10z4K5FuiHjyomk7WxVH9giwkKdxRWli/39BRXlfAHDm3u1/VriSfCHyTiuxafIZD+YUv9gP+kMchK/qcYiv68cnDgCGm9Sa03KY1/4EVgarumc4Xy7S0jSTAixVV/3NYgG6z3M4A7smvLKjtMP2EWq6ESMOVFsy6URMCU96M3UAl/xfGNg86jpVsw13q1b4AXYLI25junh84wyVbmfl2/lvji+JP0b+is7OVrEv/2of4NBMCGnkAKEFJwdJuOFLvuVClVn8AyAZLbTPcsXOigZ+6uxYe5IFqfhfJtghGjpR6GQ7wvjBz3bQHo4aOlntQsTuhfoBYLdnoP4A9SqTWtK5hroXcr9G/WaNaTLsMSc+7X9WuJLz7/YxpTY5BN1SdonXroDKOcGBrv/PDKnSoRjAjDWoqrZrpn6O+9oSfeHprhg4HaTzSpl9qj4b6Zqk/A7xGMCOtmiqseOsP7tgC0t65kccfs3bcFvttQwq0R6jhU3TkTBUDqNz8pvnNqjWaREkeJ667FB0tduD3DA9SVLH7bFVPPFH//1X9mp/NqKqEiaWOIU3nihiALflYqcoacFiXsEhcntSvCA7gHE4wI31z4A0ktNKSnSeqy2f1j+SwZC8FSiGQrBCNaIplVjRO1JEiSQzf5u4Qmsxl1DJkfuhktwDcf/P1r/DZRHQVyLb/QDAjNgND8+2Qf6KmCnhmf36+2MLqGozz87J+JpmkRUjw7/lf8nfzbp9w6MRAuaLdnGF8cf5AVPuLAk+2dM40pgmufRIrdT6nQ/ER2DqsQpjGdRT/UkKisXoygjxtfHH+p+kRDJR6riBfr5e82lG8OTO8VViw/HXT+4VfBMQMiyId3fugMvz00v1dYHXRegiC6Brw5MK1pXQGhuRhHHzG+OP4y3TOsamG5ItWEJmtjL1+zxQT0WLPFBBCppcktfvWky+hAnhtckmzFHs8lqiPoRbTeJIgypjHdtfhsMUF6FbxdSpNbpjF1JgoOOs80ptFS7/tNlcwehL+l0L+YXTpIEcy13iusieoIdljSd8YSyaCdH5SRi9qtrwl/8fJg20Sh6wNK51c1TvQiBM/25sC0afAYg+yyyu7la5ARaaiEzB5cUTuStTEea6jEvi1AV4aHzrCGSoBQ5junuxafNZpF1xq4VhoCaaYxVZM05B3I9n2/qYJjqc6XWlE70MvqXlUEjhC34G0TJaXxSLayrnNTXHXP6tf5UosV7teEv1n9mztVcqdKL3a0FFdFFz8ASGYP5gaXB46QIZC2RrN7Vj/XPvFnG8squy9T/3Fbg6JRKM12zN6/rStWNc5tE4W0M/pQYidwe05UR/De0/uZH7bUMOpzJYv54RUKDu4p1hD2eE5mDwr9C7Qpk/AXLfXQV+21zIjeWnO/bN9MPJ3/LnqLfQr/pnBHpf6D7lTp35ZlO2YvujaGCx2MfzBe4donwB8MenHbRX/NXYsPZNrf1hWp+gSkCN85NQTSG3piQ08o3NF7tXroLpntncMsEL3aSpNbUHlc+8QYZGX24B/BluVbw19AaG7oCQ2VkPRvv9b/zZMubxo8vkzdHOah915S2mwxIVrqUVwVXfxMIQ47z3TPdi0+SzRjiwkwfzaFOHRbhXcqrHDBj+l8qUz3DOZ8aOhz704aLfXeyS2+TB3cBtOYwhxI600eOELRUg/1Ct+2Ica3hj+mMdX7mWRtjKaMaCwIMRjugM5EAW0B0RCa75wag+ye1b9lJCHvDQhNVAZYIhm2dQxfDuw8N7i0RrP+bAOek4fO8KEzHMq3M90zY5CFhcquxYdCvX1b4OEC1fzwyhYTwBBSXBUmB9AEwVNV7oos/Oy/MvwVxzdSW3aIbVHgKfVwBykn/tIwAzYxrmRRTdIbeiLbOy9NbtG+QWoBMus0IFFeucElVLSYn2EahzUKZB/oEvjwx5EfXqWbR8jzlX5p2laa3CLp+KFNzCI+M54d/zFL7d9rzruIby+eHf7EX6zZFsj7I8QXxx/I3EcEk9TyCnU0n/gqCdDQjX/mMaD4BfMB6RxhHicdJLQm0psuenF9NJ7Cf0PnSz2WiVN+eKWhEj/t6t7JLUtKmynEfSKYYGYKuw93qvQ5EMwNLo1BdkXtWFLajEEWqaJtE7WktMFJQ+hfqDzxZZV9VeOEKYLWm9y1+JyJAnwU5n7Vn088Xf/L/PAKbReStXFxfMN3TqUuDOikHSl2MVLC1CJS7CJFAhc9SDnBv6k8can+gG0dR0s9ujIU+hfRUi8gNFP1CQakeHmABtLZ3rncFUGLokR1BLNUrn0CtQdWMExjiuNJVEcoMZT6f9wbt2JiH7vyZxtwKFR54no/k6iO9qx+U4hDlX+8PICXXKTYxYJa50uhEhHoj5cHsx/I3KHwbeIP/Fu8PPDytQ09sWnwrGldiepI600uq+zbJurlnn7H7N02UW8OTMFcC7nfDT2xrnPDmNYc5vErCLRDZ1hN0lhKc+2TA0fondxiCKTdqRL2D8szghE39MS2ido0eKBd+n5TRTCiMciaw3y6eQQfyDWtS0Ml6Mpwy0iu69w4vGRtjAJYlSduDLL3iif4zinqakH6xcT+oTPsSZeL4xuQN4ZAWknEcoPLcKGzZ/WH8m34uGm9SZCB4vSuMLoG8bimdUkGlX/AeNL+bygI+GFLjZpQnS8F9zSwruAw7PHcrsWXbh55+dp7hdWfbbzY0UJJ9E5uobjqrsX3YkcLH61Isbtj9hqDLJym0G/ouw0lyVZk9iD6X8Kp3Bhk920BeJxpvUlnogD5CF0Zvto3eNLlNa3LmSikm0erGifsgpyJAhp0ffSOybaOISdNN4/Q5as4voG4U+tNqkk6P7yCvgQm9xRXhQ2cP9tAfRd8EPnOKcyy/phD4NPxb9Zodl3n1nqTGIc+kX8jGPHflmUwbtsyksFc68ARQk+2VH0CEBCMWBhdWyIZNML827oC2eaA0BSnd1gomEIcqDMNldBQCVOIQ9PD/PDqtcxoj+ek/m9bBpJgRHOYX9e513XufVvgQz1Rpnum9SaVRAySdWn8s8UE9ECEhA/dOjF8wkofYmS5K5Kojl7u6SPFbnF8I7MH7fHcAn9fEH/+bGPbRKHZ7osd7a/hT+dLQS4EMz8wue/kFvBv/mzjHv/Gd06Bv0z3DI0nfZn6j1saghHxtER1ZIlkQvm2JZLZMpKJ6khN0lpvEiUtmBW8k1u8fG22/yDJVlC1FS314uXBPTlcfnil86U2DR7MNbn2CVqtSt6YFFeVyMBDZ5jvnOaHVw46j79TXFXuigSE5osdLRw1VzXOb9vkb574S9bGSiIWLw+s0eya1gUDeH+2YY/nKK6aH15ZIhkU8KGFBtc+QQPfFbXj5Z4eU7EtI4kSLJhpSP4EQv/CHOaho8P4umvxLSlt4ULHn23sWnx7Vr/MHmQa00ixi66t0rsoidiuxbdlJB10Hov0aKkn9C+03mS40HngI0s3j5aUtg09gfqGmNgP5lo7Zu+O2btr8UG+qSRie1Y/egFjlMUyyBYT0HGOaUy/21DiAzlwhP6wPYK/OP4Ko2uufYJlLDqUIkOBitTS5BaVfOL0Dtal6BfioPNKIraqccLUNlWfRIrdTPcMz5cMflAZD/oOC15Y4WLRijEMO4f9LVxywenlBpcxsZ+ojpARxCiFdfHDbl354RVdGaKIAetu6b2kmWK2dx4t9T5c2OJN8YG83NOTbAVNJf6Yg99T4O/3Bvi3DT2Bhqjf6oUpjK5l9uAfdtkrxbPDn/gLeQAx79w/oC8XC0ZE/Er5Nyi9UZzyObv6tTatXy5QDSQRd4t4iv7TaMn8KIeLPAvWGXtWvz2e+7stfpHZhpTpaT5rEHH7tsCe1Y91ydwv/9zjKfi3cKGDaj++cworNJTW4Ve+c4ou5VLVnfQrnokVDDphQCaCamQQd7BOwxMk0kyc3qHEEHwraDqhfzH7NEskgyZK4KaxSv21sgYsULATnJR08FjKoPIAQ3K2d57pnuG/0oPi+IZgRDRiMIU4aFzmfvnnHk/Bv+1Z/YnqyJepoyEbumShIRaafOxafGta1zu5BQ370JVqTePaNHiYxtQez61qnCtqh5qkU/UJsh4wqsoNLm0x4Z3csqEnlpQ2NCSyRrOwNVKTtCtZxH9f7ulB4iGbiCIaX6YO3z5xekdXhqYQZwpx1mj2nu8HarPXtK5llR2pYyURW1E7VjVOeGkagyxaJWq9SWs0K7MFccDvFdYtI4kXglmOlwdo3wox6Nwv/9zj6fgPtJAkGPHFjtbL1xTuqM6XYlvHmwbPrsWX6Z7t2wLGIOug82ijRXHV9wprQGi+3NMbg6wnXYaB5J7V/1pmRMo3WRtDTwTP3W0TZQyyWm8SlfSQJi2r7JnuGXrFpOoTW0yQNEShfHvbRP0m/jLdszcHJp0vhWQ1ZJp6P8N3TlfUDqSKnIkCxmatNwklKHp0IbeH7wygzDSm4AYXOs4nxZ87VYLC8lP0byBP17Qud6r0l9XDA0dI5Ynj5jXLv+UGlxLZBeNAQyA9iz9rNLtj9sIxcstIZnvnGHsw55vFX7jQkdmDMGP1Zxuzp8A0pn9bVxw4QmqS3jF7Ka564AiBsd00eCyRzD38begJlFrB0RDj4qEzLE7v+M6pmqQ1VGLhUf6k+EP/N72fiRS7r2XGB/g3UPjJ2lga/17tG2wxISb2Q/k22zqG/0G2d44Cz3v4g30v05jqfKkds/fT8ce1T2DbhUKv2VPIdM/eyS2WSAZUB8YzCX/oW2kKcUxjCuW8hD9QHRL+wIugIgFT27lf/rnHF8cfXRnK7MFoqQfjgW0T9WrfQLIVc5j3pMsAEMpIzWHeFhPSzSOUY4F/A4G7oScOHCGYPaK0Eyy+M1GwxQRjkEVPLIU7Gi501rSufVvgvcIqd0XcqRLMVUm2ovLEc4NLX6YOIaY4vYuJfZUnLq3Nf63uvzS5ddB5FIChgErvZ7x8DT1j0fR6VePctfhey4zWaFbuilBctTC6xhlBpGcIpP3ZxpsD05aRVLij6FA398s/93gK/g3CM9xS6cqQaUyxQsQYIPWTARGX6Z4RjOhKFtGDj++cwns+lG9jFcm1T2JiH4FdSYtQtnUMsg6iSa59gjWvOL3DAzxNsrHKD6+wHP7Njwn0HQZgrIWxEMZboLQW63EsxmepRTzAMh81p3Bjf8SePF9vPDv+g++colZq3xaAL+/cP6NFfLl4dvjDaIFagUWG9puPp+DfHpfoRIJXWn9It8LPidzgMl4esK1jrKl/8/mg0RZriM+PL44/vnPqoPOPlWstjm9cySLSMWqSdtB5NUl/Zr8N9DPa0BNQqPymHT6YDKhDFp7SnxlP4T/p5Wuw4OA7pyj+w6AocVNoLSn1bBb6F+gHjmdKLwSlduAIbZsoiqtSXDUgNCX/SbwK8/3ZXzFKSVb3H2KLbR2v69zGIJvpnr3aN0DJke2dz+4Nh5rpnqHjw5rW5UoWLZHMmta1oDGeNf6StbHcFUnWxsFca8tIbpsoFAmbwzy627+TWwCpZZU9UuyyrWO5KwIZG4RIaFuP9jXIvel8KdS/wD7QFhNS9cm+LbBtotZ17nChA44BPmsgVwhGNATShkDamSjMGqih78hfVg+3DGS01AP+YmJfZg/umL1bRhJr1W0ThZJsDZVIN4/ChU62d+7PNjb0xAJ/zxp/yD+HCx2KqzrovJevoWEV+LdUfQKND9s6hnjWmSjsmL10ZUgw4nuFNZRvvzkwmUIcyVaWlDYvX0OaTUnEtN4kXRmC5IiWeqYQF8y11rQuvZ/B/RTc8XuFle+cupJFnS+l86UcdP5ewQvXPlnTupCMBP4CQtMWEyAK0fsZ3GrTzSMNlQCa4a+FjoeLNMpXgD+498ldETVJ/21dAf7DGs1+iv/kn1cOZPagyhPfNHj82Qa67rpTJYqrwv/ZGs3GywP0fHstM+Jd0J8yIDSXlDbU9EP5hiZKs0eY7Z1v6Alfpl4YXQN/4UIHDUiWVXaFO7ptotCjCwapmBjEywNTiFtROxbj31eAP4l/oyvDh/k3ezwHs29AB3o56MTQmfIj/pORjM6XQlnNrsWnJGJor5rtnROM+E5uyfbOA0LTlSy6kkVfpn5vvXwPf1hboHfrgSOE3jU6XyrbOzeFOJgXqjxxJIneyS2PZe3/x4ynqL/aMpLhQkfjTb6TWzYNnu83VWhE7aDz4Ea13mRxfKP3M6YQBwxt6Illlf3lnh5lKZgLKtxRujLEGCZBR+6KoHvvmwPTton6aVen8sTRnXBDT7yTW37a1T28RM32zves/oDQLIyuIT530Pn3Cit6Lqg88VC+janqix3tlpGMlwebBg9mhBiq534Vv954Ov4Nt1S6MkzWxkL/QsqfgZsSf+Hf8sOrUL7tSZd1vtSyyg41Gl0ZYmmCtbC0gAB9B+MpujJEe0EsqH2ZuiddVrij6zr3w/grTW7Z1jFghIJWSPViYj/VmMAwE27m8JTGuidS7MbLg0UZy3PH3+8NtnVsCKRVnvi+LYDEyt+3E/Rf2LP6Ka76mVnieHkg7e0bluTNJZ4d/qDAjRS7dGX4d1dolia3yJI8irWUVNOQqk8W2ebHjWeHv0X8oWKBv0XMMxb4W8Q8Y4G/RcwzFvhbxDxjgb9FzDMW+FvEPGOBv0XMMx4Nf/899nOyf7eIRfyu+J/xx8BfcXL3n0I//5foIhbx++KfIj8XJ5+Nv9vb28vrRSzi74mbB3H1qfhbbIvtS2wL/C22eW4L/C22eW4L/C22eW4L/C22eW4L/C22eW4L/C22eW4L/C22eW4L/C22eW4L/C22eW4L/C22eW4L/C22eW4L/C22eW4L/C22eW7/F5h+FPvdzI2wAAAAAElFTkSuQmCC" alt="" />

第三种方法,通过自定义attrs.xml来实现 ,通过context.obtainStyledAttributes(attrs,R.styleable.ImageTextView).getString()方法拿到属性值

(1)自定义一个attrs.xml文件

<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="ImageTextView">
<attr name="iamgeDimension" format="dimension" />
<attr name="imageReference" format="reference" />
<attr name="iamgeColor" format="color" />
<attr name="iamgeString" format="string" />
<attr name="iamgeInteger" format="integer" />
<attr name="iamgeFloat" format="float" />
<attr name="iamgeBoolean" format="boolean" />
<attr name="iamgeFraction" format="fraction" />
<attr name="iamgeEnum1">
<enum name="enum1" value="1"></enum>
<enum name="enum2" value="2"></enum>
</attr>
<attr name="iamgeFlag">
<flag name="flag1" value="1"></flag>
<flag name="flag2" value="2"></flag>
<flag name="flag3" value="3"></flag>
</attr>
</declare-styleable>
</resources>

或者

<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="iamgeDimension" format="dimension" />
<attr name="imageReference" format="reference" />
<attr name="iamgeColor" format="color" />
<attr name="iamgeString" format="string" />
<attr name="iamgeInteger" format="integer" />
<attr name="iamgeFloat" format="float" />
<attr name="iamgeBoolean" format="boolean" />
<attr name="iamgeFraction" format="fraction" />
<attr name="iamgeEnum1">
<enum name="enum1" value="1"></enum>
<enum name="enum2" value="2"></enum>
</attr>
<attr name="iamgeFlag">
<flag name="flag1" value="1"></flag>
<flag name="flag2" value="2"></flag>
<flag name="flag3" value="3"></flag>
</attr> <declare-styleable name="ImageTextView">
<attr name="iamgeDimension"></attr>
<attr name="imageReference"></attr>
<attr name="iamgeColor"></attr>
<attr name="iamgeString"></attr>
<attr name="iamgeInteger"></attr>
<attr name="iamgeFloat"></attr>
<attr name="iamgeBoolean"></attr>
<attr name="iamgeFraction"></attr>
<attr name="iamgeEnum1"></attr>
<attr name="iamgeFlag"></attr>
</declare-styleable>
</resources>

两种方法都可以,自定义属性分两步:

  1. 定义公共属性
  2. 定义控件的主题样式

如上面的xml文件第一部分是公共的属性,第二部分是自定义控件MyCustomView的主题样式,该主题样式里的属性必须包含在公共属性里面。言外之意就是公共属性可以被多个自定义控件主题样式使用。

(2)在xml文件中使用这一属性,注意此时命名空间的书写规范。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ImageTextView="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
tools:context=".MainActivity"> <com.example.lenovo.custom_textview.ImageTextView3
android:layout_width="wrap_content"
android:layout_height="wrap_content"
ImageTextView:iamgeDimension="100dp"
ImageTextView:imageReference="@drawable/trash"
ImageTextView:iamgeColor="@color/material_blue_grey_800"
ImageTextView:iamgeString="自定义属性"
ImageTextView:iamgeInteger="100"
ImageTextView:iamgeFloat="0.8"
ImageTextView:iamgeBoolean="true"
ImageTextView:iamgeFraction="200%p"
ImageTextView:iamgeEnum1="enum2"
ImageTextView:iamgeFlag="flag3"
/>
</LinearLayout>

(3)在代码中使用context.obtainStyledAttributes获得属性值

<attr name="iamgeString" format="string" />

指 定为一个declare-styleable,而在declare-styleable 下的attr (即各属性)Android 的ADT 将会自动生成为declare-styleable的name 名字加上“_”加上对应attr(即属性名称)的名称,如上(ImageTextView_String)我们要得到Text 就需要R.styleable.ImageTextView_String,这一点的话可以看看R.java生成文件

package com.example.lenovo.custom_textview;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.TextView; /**
* Created by lenovo on 2016/2/18.
*/
public class ImageTextView3 extends TextView {
public ImageTextView3(Context context) {
super(context);
}
public ImageTextView3(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.ImageTextView);
  // TypedArray是存放资源的array,1.通过上下文得到这个数组,attrs是构造函数传进来的,对应attrs.xml 
   // 获得xml里定义的属性,格式为 名称_属性名 后面是默认值
double iamgeDimension = typedArray.getDimension(R.styleable.ImageTextView_iamgeDimension, 0);
int imageReference = typedArray.getResourceId(R.styleable.ImageTextView_imageReference, 0);
bitmap = BitmapFactory.decodeResource(getResources(), imageReference);
Drawable drawable = typedArray.getDrawable(R.styleable.ImageTextView_imageReference);
double iamgeColor = typedArray.getColor(R.styleable.ImageTextView_iamgeColor, 0);
String iamgeString = typedArray.getString(R.styleable.ImageTextView_iamgeString);
double iamgeInteger = typedArray.getInteger(R.styleable.ImageTextView_iamgeInteger, 0);
double iamgeFloat = typedArray.getFloat(R.styleable.ImageTextView_iamgeFloat, 0);
boolean iamgeBoolean = typedArray.getBoolean(R.styleable.ImageTextView_iamgeBoolean, false); // ImageTextView:iamgeFraction="200%"
// ImageTextView:iamgeFraction="200%p"
// double iamgeFraction = typedArray.getFraction(R.styleable.ImageTextView_iamgeFraction, 4, 5, 1);
// 1)如果mageTextView_iamgeFraction 是200%,那么result就是:200%*4 ~ 8
// 2)如果mageTextView_iamgeFraction 是200%p,那么result就是:200%*5 ~ 10
double iamgeFraction = typedArray.getFraction(R.styleable.ImageTextView_iamgeFraction, 4, 5, 1);
double iamgeEnum1 = typedArray.getInteger(R.styleable.ImageTextView_iamgeEnum1, 0);
double iamgeFlag = typedArray.getInteger(R.styleable.ImageTextView_iamgeFlag, 0);
   // 为了保持以后使用该属性一致性,返回一个绑定资源结束的信号给资源 
typedArray.recycle(); //调用结束后务必调用recycle()方法,否则这次的设定会对下次的使用造成影响
StringBuffer str = new StringBuffer();
str.append("iamgeDimension= " + iamgeDimension + "\n");
str.append("imageReference= " + imageReference + "\n");
str.append("iamgeColor= " + iamgeColor + "\n");
str.append("iamgeBoolean= " + iamgeBoolean + "\n");
str.append("iamgeString= " + iamgeString + "\n");
str.append("iamgeInteger= " + iamgeInteger + "\n");
str.append("iamgeFloat= " + iamgeFloat + "\n");
str.append("iamgeFraction= " + iamgeFraction + "\n");
str.append("iamgeEnum1= " + iamgeEnum1 + "\n");
str.append("iamgeFlag= " + iamgeFlag + "\n");
setText(str.toString()); } public ImageTextView3(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
} private Bitmap bitmap; @Override
public void onDraw(Canvas canvas) {
if (bitmap != null) {
Rect src = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); Rect target = new Rect();
int textHeight = (int) getTextSize();
target.left = 0;
target.top = (int) (getMeasuredHeight() - getTextSize()) / 2 + 1;
target.bottom = target.top + textHeight;
target.right = (int) (textHeight * (bitmap.getWidth() / (float) bitmap.getHeight()));
canvas.drawBitmap(bitmap, src, target, getPaint());
canvas.translate(target.right + 2, 0);
} super.onDraw(canvas);
}
}

结果:

aaarticlea/png;base64,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" alt="" />

总结:

这是这两种为Android 注册 属性的使用方法,那么两者有什么区别呢?

在这里我认为起码有五点,大家可以找找看还有什么区别:

  • 第二种可以编译时报错,如果编程人员随便输入什么第一种是不会报错的,第二种可以支持代码检测功能。
  • 第二种写法,跟Android 属性标准写法是一致的,而且可以统一书法规则。
  • 第二种写法,可以支持数据格式的验证,比如我们在attrs上注明只支持integer 那么就不可以使用字符串,这是第一种达不到的。
  • 第二种写法,可以为VIEW提供选择操作,比如如上我们使用的ENUM让VIEW对应的属性支持ENUM列表,或者为其提供BOOL等只有双项选择的操作。
  • 第一种写法,所有的属性必须是引用自资源(不大确定,如果朋友有什么好的DEMO麻烦共享),第二种写法,可以即支持引用资源又可以直接输入做操作,为编程带来更多的方便性。

种种都说明,第二种写法更具规范性,功能更性,代码编写 也更优雅。

Dome下载

aaarticlea/png;base64,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" alt="" />