Android动态加载XML文件及控件来简单实现QQ好友印象的功能

来源:互联网 发布:怎么健身 知乎 编辑:程序博客网 时间:2024/04/29 12:20

        在android开发中,我们常常会遇到界面布局控件不确定的情况。由于某些功能的原因或者为了体现某些app的特色等这些原因会导致我们在实现界面布局时需要动态去加载一些控件,那么下面就来介绍一下如何用动态加载控件来简单实现QQ中好友印象的功能,其中也会提到如何来动态加载一个XML的配置文件。

        那么要实现好友印象的功能,我们需要通过以下这几个步骤:

                1.界面一开始需要加载一个EditText和Button控件,用于填写好友印象和添加好友印象;

                2.需要新建一个arrays.xml,在xml文件中添加上好友印象标签的背景颜色;

                3.在Activity中加载xml文件,获取文件中的颜色,并且为Button控件添加事件监听,实现点击后能够自动生成带有背景颜色的好友印象标签。

       按照以上三个步骤,来看下面的代码:

在该配置文件中只随便定义了四种颜色

arrays.xml
<?xml version="1.0" encoding="utf-8"?><resources>    <string-array name="colorsArray">        <item >#ff78ff</item>        <item >#abcd12</item>        <item >#cdba34</item>        <item >#345677</item>    </string-array></resources>

下面来看下怎么来加载配置文件和控件

package com.example.sundyandroidtest;import java.util.Random;import android.app.Activity;import android.graphics.Color;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.LinearLayout;import android.widget.LinearLayout.LayoutParams;import android.widget.TextView;public class AutoColorShowActivity extends Activity{//保存XML文件中的颜色字符串String[] aColors;//声明一个线性布局LinearLayout mLayout = null;//声明线性布局的width和heightLinearLayout.LayoutParams lpFF;//声明控件的width和heightLinearLayout.LayoutParams lpWW;//声明好友印象标签TextView colorTextView = null;//声明添加按钮Button butAdd = null;//声明好友印象评价输入框EditText editText = null;//声明随机数,用于随机标签颜色Random rand = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//获取颜色字符串数组aColors = getResources().getStringArray(R.array.colorsArray);mLayout = new LinearLayout(this);//设置布局属性mLayout.setOrientation(LinearLayout.VERTICAL);lpFF = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);lpWW = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT);mLayout.setLayoutParams(lpFF);//向布局中添加控件editText = new EditText(this);mLayout.addView(editText, lpWW);butAdd = new Button(this);butAdd.setText("添加");mLayout.addView(butAdd, lpWW);setContentView(mLayout);rand = new Random();butAdd.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {//生成一个0到数组长度之间的随机数int tag = rand.nextInt(aColors.length-1);//获取EditText中输入的好友印象评价String info = editText.getText().toString();//动态生成一个文本标签,并为标签设置文本和颜色colorTextView = new TextView(AutoColorShowActivity.this);colorTextView.setText(info);colorTextView.setTextColor(Color.BLACK);colorTextView.setTextSize(30f);colorTextView.setBackgroundColor(Color.parseColor(aColors[tag]));mLayout.addView(colorTextView, lpWW);editText.setText("");//更新布局mLayout.refreshDrawableState();}});}}

1 0
原创粉丝点击