android开发中的UI控制(五)

    [size=large;]android开发中的ui控制(五)[/size]
 
转载自: http://www.android777.com/index.php/tutorial/android-view/androids-ui-control-v.html
 
 
下面看几个比较有意思的ui控件。
spinner:
spinner是adaperview的子类,跟listview、gridview一样,所以得设置adapter提供数据源。
 
<?xml version="1.0" encoding="utf-8"?><linearlayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    ><spinner      android:id="@+id/spinner1"    android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:prompt="@string/prompt_province"    /></linearlayout>
 
效果图如下:
<p style="text-align: center;"><br><img src="http://dl.iteye.com/upload/attachment/531777/8e461bc2-83ba-319a-ab15-2a482d086451.png" alt=""> 
[size=large;] gallery:[/size]
 
gallery是一个横向的可滚动的list容器,它的焦点一直是在区域的中间部分。它一般用来显示一系列照片,特别是在触摸屏中经常使用它。可以通过在xml中定义:
 
<?xml version="1.0" encoding="utf-8"?><linearlayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    >  <gallery      android:id="@+id/gallery01"    android:layout_width="fill_parent"     android:layout_height="fill_parent"     /></linearlayout>
 
然后跟其他的listview、gridview、spinner一样,我们将一个adapter与它进行绑定,用来显示几张图片。这边还有一个额外的操作就是要定义一个样式,作为它里面item的样式。在这边我们通过在attrs.xml里定义一个样式来实现:
res\values\attrs.xml:
 
<?xml version="1.0" encoding="utf-8"?><resources>    <declare-styleable name="mygallery">        <attr name="android:galleryitembackground" />    </declare-styleable></resources>
 
然后将需要显示的图片(附件中的图片js1.jpg,js2.jpg,js3.jpg,js4.jpg,js5.jpg)放到res\drawable或res\drawable-*中。
 
在显示的activity里,定义一个内部类mybaseadapter用来将数据和gallery进行绑定。
mybaseadapter.java
package com.zhouzijing.android;import java.util.list;import android.content.context;import android.content.res.typedarray;import android.util.log;import android.view.layoutinflater;import android.view.view;import android.view.viewgroup;import android.widget.baseadapter;import android.widget.imageview;import android.widget.textview;public class mybaseadapter extends baseadapter {	private list<person> persons;	context context;	int mgalleryitembackground;		public mybaseadapter(context context,list<person> persons){		this.persons = persons;		this.context = context;				//获取自定义样式        typedarray attr = context.obtainstyledattributes(r.styleable.mygallery);        //获取样式里的资源        mgalleryitembackground = attr.getresourceid(                r.styleable.mygallery_android_galleryitembackground, 0);        attr.recycle();	}	@override	public int getcount() {		return (persons==null)?0:persons.size();	}	@override	public object getitem(int position) {		return persons.get(position);	}	@override	public long getitemid(int position) {		return position;	}			public class viewholder{		textview textviewitem01;		imageview imageview;	}	@override	public view getview(int position, view convertview, viewgroup parent) {		final person person = (person)getitem(position);		viewholder viewholder = null;		if(convertview==null){			log.d("mybaseadapter", "新建convertview,position="+position);			convertview = layoutinflater.from(context).inflate(					r.layout.gallery1_item, null);			viewholder = new viewholder();			viewholder.textviewitem01 = (textview)convertview.findviewbyid(					r.id.text_view_01);			viewholder.imageview = (imageview)convertview.findviewbyid(					r.id.image_view_01);			convertview.settag(viewholder);		}else{			viewholder = (viewholder)convertview.gettag();			log.d("mybaseadapter", "旧的convertview,position="+position);		}				viewholder.textviewitem01.settext(person.title);		viewholder.imageview.setimageresource(person.photo);		viewholder.imageview.setbackgroundresource(mgalleryitembackground);		return convertview;	}}
 
然后在activity的oncreate方法中,找出gallery,然后将之前定义的所有图片资源放到自定义的adapter:mybaseadapter中,跟gallery绑定。
    @override    public void oncreate(bundle savedinstancestate) {        super.oncreate(savedinstancestate);        setcontentview(r.layout.gallery1);                //要显示的图片        final list<person> persons = new arraylist<person>();        persons.add(new person("夜景1",r.drawable.js1));        persons.add(new person("夜景2",r.drawable.js2));        persons.add(new person("夜景3",r.drawable.js3));        persons.add(new person("夜景4",r.drawable.js4));        persons.add(new person("夜景5",r.drawable.js5));                //显示gallery        gallery g = (gallery) findviewbyid(r.id.gallery01);        g.setadapter(new mybaseadapter(this, persons));        g.setonitemclicklistener(new onitemclicklistener(){			@override			public void onitemclick(adapterview<?> parent, view view,					int position, long id) {				toast.maketext(getapplicationcontext(), "点击了"+persons.get(position).title, toast.length_short).show();			}        });    }
 
效果图如下:
 
<p style="text-align: center;"><br><img src="http://dl.iteye.com/upload/attachment/532052/c5dcad79-72dd-3459-af56-7397c5084ae2.png" alt=""> 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

你可能感兴趣的:(java,工作)