文字,自定义文字壁纸

  • 编辑: 柯秀筠
  • 2019-11-15 13:24:36
  • 人阅读
输入文字自动生成图片,Android自定义实现图片加文本函数分四个步骤编写:1,xml;2,组合控件的自定义组合控件属性;3,自定义继承组合布局的类类,并使用两个参数实现构造函数;

Android自定义实现图片加文字功能

分四步来写:

1,组合控件的xml; 2,自定义组合控件的属性; 3,自定义继承组合布局的class类,实现带两参数的构造器; 4,在xml中展示组合控件。

具体实现过程:

一、组合控件的xml

我接触的有两种方式,一种是普通的Activity的xml;一种是父节点为merge的xml。我项目中用的是第一种,但个人感觉第二种好,因为第一种多了相对或者绝对布局层。

我写的 custom_pictext.xml

?xml version=1.0 encoding=utf-8?RelativeLayout xmlns:android= android:layout_width=wrap_content android:layout_height=wrap_contentImageViewandroid:id=@ id/custom_pic_ivandroid:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:background=@mipmap/a /TextViewandroid:id=@ id/custom_date_tvandroid:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:layout_alignBottom=@id/custom_pic_ivandroid:layout_marginBottom=5dpandroid:layout_marginLeft=8dpandroid:text=2017 /TextViewandroid:id=@ id/custom_text_tvandroid:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:layout_below=@id/custom_pic_ivandroid:layout_marginLeft=4dpandroid:layout_marginTop=4dpandroid:text=题目 //RelativeLayout

这里展示一个merge的例子,有时间,大家可以自己体会下。

merge xmlns:android=Buttonandroid:id=@ id/title_bar_leftandroid:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:layout_alignParentLeft=trueandroid:layout_centerVertical=trueandroid:layout_marginLeft=5dpandroid:background=@nullandroid:minHeight=45dpandroid:minWidth=45dpandroid:textSize=14sp /TextViewandroid:id=@ id/title_bar_titleandroid:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:layout_centerInParent=trueandroid:singleLine=trueandroid:textSize=17sp /Buttonandroid:id=@ id/title_bar_rightandroid:layout_width=wrap_contentandroid:layout_height=wrap_contentandroid:layout_alignParentRight=trueandroid:layout_centerVertical=trueandroid:layout_marginRight=7dpandroid:background=@nullandroid:minHeight=45dpandroid:minWidth=45dpandroid:textSize=14sp //merge

这两个xml,都是写在layout中的。

二、自定义组合控件的属性

这步是我们自定义的重要部分之一,自定义组件的私有特性全显示在这。

首先在values中创建attrs.xml

然后定义属性,如下代码

?xml version=1.0 encoding=UTF-8 ?resources declare-styleable name=CustomPicTextattr name=pic_backgroud format=reference/attr name=pic_backgroud_width format=dimension/attr name=pic_backgroud_height format=dimension/attr name=pic_text format=string/attr name=pic_text_color format=color/attr name=pic_text_size format=integer/attr name=pic_date format=string/attr name=pic_date_color format=color/attr name=pic_date_size format=integer/ /declare-styleable/resources

这里有几点需要注意的,第一:属性名为name,第二:属性单位为fromat。这单位包含的值可以查看这里。

三、自定义继承组合布局的class类,实现带两参数的构造器

我实现的CustomPicText.Java

/** * Created by Hman on 2017/5/4. * 为了测试自定义组合控件 */public class CustomPicText extends RelativeLayout {private ImageView customPicIv; private TextView customDateTv; private TextView customTextTv;public CustomPicText(Context context, AttributeSet attrs) {super(context, attrs);// 加载layoutView view = LayoutInflater.from(context).inflate(R.layout.custom_pictext,this);customPicIv = (ImageView) view.findViewById(R.id.custom_pic_iv);customDateTv = (TextView) view.findViewById(R.id.custom_date_tv);customTextTv = (TextView) view.findViewById(R.id.custom_text_tv);// 加载自定义属性配置TypedArray typedArray = context.obtainStyledAttributes(attrs,R.styleable.CustomPicText);// 为自定义属性添加特性if (typedArray != null) {// 为图片添加特性int picBackgroud = typedArray.getResourceId(R.styleable.CustomPicText_pic_backgroud, 0);float picWidth = typedArray.getDimension(R.styleable.CustomPicText_pic_backgroud_width,25);float picHeight = typedArray.getDimension(R.styleable.CustomPicText_pic_backgroud_height,25);customPicIv.setBackgroundResource(picBackgroud);//customPicIv.setMinimumWidth(picWidth);// 为标题设置属性String picText = typedArray.getString(R.styleable.CustomPicText_pic_text);int picTextColor = typedArray.getColor(R.styleable.CustomPicText_pic_text_color,16);int picTextSize = typedArray.getResourceId(R.styleable.CustomPicText_pic_date_size, 16);customTextTv.setText(picText);customTextTv.setTextColor(picTextColor);customTextTv.setTextSize(picTextSize);// 为日期设置属性String picDate = typedArray.getString(R.styleable.CustomPicText_pic_date);int picDateColor = typedArray.getColor(R.styleable.CustomPicText_pic_date_color, 0);int picDateSize = typedArray.getResourceId(R.styleable.CustomPicText_pic_date_size, 12);customDateTv.setText(picDate);customDateTv.setTextColor(picDateColor);customDateTv.setTextSize(picDateSize);typedArray.recycle();}}}

在这里,我们也可以给控件添加一些监听器,大家自己去加上;这里值得注意的是一个加载配置的类TypeArray

4,在xml中展示组合控件

这个随便写到一个xml中去就行

代码如下

本文原标题:微信地区怎么自定义文字,自定义

版权声明:本文由 柯秀筠 整理编辑,如果侵权请联系我们!

转载注明出处:http://www.nintaus.net/jichu/4391.html

文章评论

共有 条评论来说两句吧...

用户名:

验证码:

Top