当前位置:  编程技术>移动开发
本页文章导读:
    ▪怎么定制自己的View        如何定制自己的View 关于如何定制自己的View,查了相关的文档也看了一些例子,现在把自己的理解总结一下,和大家分享。制定自己的View,一般要继承自某一类的View,然后完成构造方法,以.........
    ▪ 浏览资料        浏览文件 主类 import java.io.File; import java.util.ArrayList; import java.util.List; import android.app.AlertDialog; import android.app.Dialog; import android.app.ListActivity; import android.os.Bundle; import android.view.View; import an.........
    ▪ Crowdroid(多功能多重微博客户端) 1.4.0已公布       Crowdroid(多功能多重微博客户端) 1.4.0已发布 Crowdroid 1.4.0中功能增设及修正事项 ★ 与URL短缩功能(bit.ly)的协同工作   ★ 一齐关闭回复履历★ 与Simple IME的协同工作★ 在Crowdroid for Business.........

[1]怎么定制自己的View
    来源: 互联网  发布时间: 2014-02-18
如何定制自己的View
关于如何定制自己的View,查了相关的文档也看了一些例子,现在把自己的理解总结一下,和大家分享。
制定自己的View,一般要继承自某一类的View,然后完成构造方法,以及对onDraw()的重写,构造方法里面涉及到一些自定义的属性,自定义的属性在res/values下新建一个attrs.xml中申明,如下所示:
arrts.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="MyView" >
    	<attr name="text_color" format="color" />
    	<attr name="text_size" format="dimension" />
    </declare-styleable >
</resources>

在构造方法中属性的引用格式是:属性集合名_属性名,如这里要引用text_color属性,则是R.stylebale.MyView_text_color
接下来的重点就是自定义自己的View,先上代码:
package com.lee.view;

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.util.AttributeSet;
import android.view.View;

public class MyView extends View {
	private Paint myPaint;//画笔
	private static final String BLOG = "http://xueyilee.iteye.com";
	
	public MyView(Context context) {
		super(context);
		myPaint = new Paint();
	}

/*
Constructor that is called when inflating a view from XML. This is called when a view is being constructed from an XML file, supplying attributes that were specified in the XML file. This version uses a default style of 0, so the only attribute values applied are those in the Context's Theme and the given AttributeSet.xml布局文件有该View时就调用此构造方法,属性会传给attrs
*/	
	public MyView(Context context, AttributeSet attrs) {
		super(context, attrs);
		myPaint = new Paint();
		
		//获得TypedArray接口容器,通过它可以检索自定义的属性
		TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.MyView);
		
		//检索属性值,第二个参数是默认值,如果没有定义则返回默认值
		int textColor = ta.getColor(R.styleable.MyView_text_color, 0xff0000);
		float textSize = ta.getDimension(R.styleable.MyView_text_size, 30);
		
		myPaint.setColor(textColor);
		myPaint.setTextSize(textSize);
		ta.recycle();//这个回收方法一定不要忘了
	}
	
	/*当View渲染它的内容的时候调用此方法*/
	@Override
	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);
		myPaint.setStyle(Style.FILL);//设置填充
		myPaint.setAntiAlias(true);//消除锯齿
		canvas.drawCircle(50, 50, 30, myPaint);
		myPaint.setColor(Color.BLUE);
		canvas.drawText(BLOG, 20, 100, myPaint);
	}


}

接下来就是布局文件了。
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
	xmlns:android="http://schemas.android.com/apk/res/android"
        
//这个命名空间部分千万不要忘了,它是自定义属性前缀
	xmlns:lee="http://schemas.android.com/apk/res/com.lee.view"

	android:orientation="vertical"
	android:layout_width="match_parent"
	android:layout_height="match_parent"
    >

	<com.lee.view.MyView
		android:layout_width="match_parent"
		android:layout_height="wrap_content"
		lee:text_color="#00ff00"
		lee:text_size="20px"
		/>
			
</LinearLayout>

差不多就这么多了,下面是程序运行后的结果:



    
[2] 浏览资料
    来源: 互联网  发布时间: 2014-02-18
浏览文件
主类

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ListActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class FileList extends ListActivity {
	
	private List<String> items = null;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.directory_list);
        fillWithRoot();
    }
    
    @Override
	protected void onListItemClick(ListView l, View v, int position, long id) {
		int selectionRowID = (int) getSelectedItemId();
		if (selectionRowID == 0) {
			fillWithRoot();
		} else {
			File file = new File(items.get(selectionRowID));
			if (file.isDirectory())
				fill(file.listFiles());
			else {
				Dialog dialog = new AlertDialog.Builder(this).setIcon(android.R.drawable.btn_star).setTitle("Not a Directory").setMessage(
				"That's a file, not a directory").setPositiveButton("Cancel", null).create();
				dialog.show();
			}
		}
	}

    private void fillWithRoot() {
    	fill(new File("/").listFiles());
    }

	private void fill(File[] files) {
		items = new ArrayList<String>();
		items.add(getString(R.string.to_top));
		for (File file : files)
			items.add(file.getPath());
		ArrayAdapter<String> fileList = new ArrayAdapter<String>(this, R.layout.file_row, items);
		setListAdapter(fileList);
	}
}

directory_list.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="wrap_content" android:layout_height="wrap_content">
	<ListView android:id="@id/android:list" android:layout_width="wrap_content"
		android:layout_height="wrap_content" />
	<TextView android:id="@id/android:empty" android:layout_width="wrap_content"
		android:layout_height="wrap_content" android:text="@string/no_files" />
</LinearLayout>

file_row.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
	android:id="@+id/text1" android:layout_width="wrap_content"
	android:layout_height="wrap_content" /> 

    
[3] Crowdroid(多功能多重微博客户端) 1.4.0已公布
    来源: 互联网  发布时间: 2014-02-18
Crowdroid(多功能多重微博客户端) 1.4.0已发布
Crowdroid 1.4.0中功能增设及修正事项



★ 与URL短缩功能(bit.ly)的协同工作

 



★ 一齐关闭回复履历





★ 与Simple IME的协同工作

★ 在Crowdroid for Business(Android客户端)处推送的“字符限制”可以在服务器端任意修改(字符数)

★ 其他Bugs修正




下载 : http://www.anhuioss.com/cn/download.html

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3