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

在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和height
	LinearLayout.LayoutParams lpFF;
	//声明控件的width和height
	LinearLayout.LayoutParams lpWW;
	//声明好友印象标签
	TextView colorTextView = null;
	//声明添加按钮
	Button butAdd = null;
	//声明好友印象评价输入框
	EditText editText = null;
	//声明随机数,用于随机标签颜色
	Random rand = null;

	@Override
	protected 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() {

			@Override
			public 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();

			}
		});

	}

}
时间: 2024-10-02 06:33:27

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

在ASP.NET中动态加载内容(用户控件和模板)

在ASP.NET中动态加载内容(用户控件和模板) 要点: 1. 使用Page.ParseControl 2. 使用base.LoadControl 第一部分:加载模板 下 面是一个模板“<table width=100%><tr><td width=100% colspan=2 runat=server id=ContainerTop></td></tr><tr><td width=30% runat=server id=Con

Android动态加载so文件

在Android中调用动态库文件(*.so)都是通过jni的方式,而且往往在apk或jar包中调用so文件时,都要将对应so文件打包进apk或jar包,工程目录下图: 以上方式的存在的问题: 1.缺少灵活性比较类似静态加载了(不是静态加载),能加载的so文件绑定死了: 2.但so文件很多或很大时,会导致对应的apk和jar包很大: 3.不能动态的对so文件更新: Android中加载so文件的提供的API: void System.load(String pathName); 说明: 1.pat

关于Android 动态加载 jar 文件

1.1 首先需要了解一点:在Android中可以动态加载,但无法像Java中那样方便动态加载jar 原因:Android的虚拟机(Dalvik VM)是不认识Java打出jar的byte code,需要通过dx工具来优化转换成Dalvik byte code才行.这一点在咱们Android项目打包的apk中可以看出:引入其他Jar的内容都被打包进了classes.dex. 所以这条路不通,请大家注意. 1.2 当前哪些API可用于动态加载 1.2.1 DexClassLoader 这个可以加载j

Ajax动态加载xml文件内容

<%@page import="javax.swing.JOptionPane"%> <%@page import="com.ctl.util.*"%> <%@page import="com.ctl.util.test.*"%> <%@page import="java.sql.*"%> <%@ page language="java" import=

Android动态加载技术三个关键问题详解

编者按:InfoQ开设新栏目“品味书香”,精选技术书籍的精彩章节,以及分享看完书留下的思考和收获,欢迎大家关注.本文节选自任玉刚著<Android开发艺术探索>中的章节“Android的动态加载技术”,探讨了Android动态加载的三个关键问题. 动态加载技术(也叫插件化技术)在技术驱动型的公司中扮演着相当重要的角色,当项目越来越庞大的时候,需要通过插件化来减轻应用的内存和CPU占用,还可以实现热插拔,即在不发布新版本的情况下更新某些模块.动态加载是一项很复杂的技术,这里主要介绍动态加载技术中

Android动态加载那些事儿

基础 1.Java 类加载器 类加载器(class loader)是 Java?中的一个很重要的概念.类加载器负责加载 Java 类的字节代码到 Java 虚拟机中.本文首先详细介绍了 Java 类加载器的基本概念,包括代理模式.加载类的具体过程和线程上下文类加载器等,接着介绍如何开发自己的类加载器,最后介绍了类加载器在 Web 容器和 OSGi?中的应用. 2.反射原理 Java 提供的反射機制允許您於執行時期動態載入類別.檢視類別資訊.生成物件或操作生成的物件,要舉反射機制的一個應用實例,就

Android动态加载框架DL的架构与基本原理解析

转载请注明出处,本文来自[ Mr.Simple的博客 ]. 我正在参加博客之星,点击这里投我一票吧,谢谢~ 前言 最近这一两年,Android App使用插件化技术开发的数量越来越大,其实还是业务地快速膨胀导致,需求越来越多,App越来越臃肿.虽然手机的内存空间不断地的增大,但是太大的安装包给用户也造成了心理压力.于是大家都会想到插件化的开发方式,把App做成一个平台,而不是一个独立的app.平台上可以集成各种各样的功能,功能模块也插件的形式添加进来,这些插件不需要安装,只需要用户按需下载到某个

Android动态加载jar/dex

http://www.cnblogs.com/over140/archive/2011/11/23/2259367.html 前言 在目前的软硬件环境下,Native App与Web App在用户体验上有着明显的优势,但在实际项目中有些会因为业务的频繁变更而频繁的升级客户端,造成较差的用户体验,而这也恰恰是Web App的优势.本文对网上Android动态加载jar的资料进行梳理和实践在这里与大家一起分享,试图改善频繁升级这一弊病. 声明 欢迎转载,但请保留文章原始出处:) 博客园:http:/

Qt动态加载ui文件(实现加载客户自定义的一些widget,如QVTKWidget)

利用Qt动态加载ui文件主要是实现ui设计和软件设计的分离,ui只需要向编程人员提供各个控件名称即可.这样做可以满足软件设计后期,由于客户需求,ui风格多变的情况下,不影响编程人员的开发. 具体实现:网上资料较多,一般利用QuiLoader ,只能加载Qwidget 或者QFrame,以下代码主要实现加载的Qwidget 窗口的子窗口有一些用户自定义的Widget ,这里我想加载的是QVTKWidget QString uiFilePath = "E:\\TASK\\CTSoftware\\Qt