Android入门开发之中级组件

一、AutoCompleteTextView和Spinner

   activity_main.xml文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context=".MainActivity" >
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10pt"
        android:text="自动完成文本框" />  
    <AutoCompleteTextView 
        android:id="@+id/textView"
        android:layout_width="fill_parent"
        android:layout_height="40dp"
        android:soundEffectsEnabled="true"
        android:background="#ff9999"
        android:hint="请输入刘"
        android:completionThreshold="1"/>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
         >
     <Spinner
         android:id="@+id/spinnerfirst"
         android:layout_width="100dp"
         android:layout_height="40dp"
         android:entries="@array/names" />
     <Spinner
         android:id="@+id/spinnersecond"
         android:layout_width="100dp"
         android:layout_height="40dp"/>
     </LinearLayout>
</LinearLayout> 

   completelist.xml文件:为自动完成文本框的每一列提供布局,很简单,只有一个TextView

<?xml version="1.0" encoding="utf-8"?>
<TextView  xmlns:android="http://schemas.android.com/apk/res/android" 
        android:id="@+id/line"
        android:layout_width="fill_parent"
        android:background="#9ff999"
        android:layout_height="30dp" />
    MainActivity.java文件:

package com.example.autocompletetextviewtest;
/**
 * @CopyRight qiao
 */
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Spinner;
import android.widget.Toast;

public class MainActivity extends Activity {

	private Spinner spFirst;
	private Spinner spSecond;
	private AutoCompleteTextView actv = null;
	private String[] names = new String[]{ 
	     "刘德华",
	     "刘涛",
	     "刘亦菲",
	     "刘关张",
	     "刘小菲"
	};
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//自动完成文本框的列适配数据
		ArrayAdapter<String> aa = new ArrayAdapter<String>(this,R.layout.completelist,names);
		//实例化自动完后文本框
		actv = (AutoCompleteTextView)findViewById(R.id.textView);
		//为文本框设置适配数据
		actv.setAdapter(aa);
		//设置第二下拉列表的数据适配器,注意与这种情况与第一个下拉列表实现方式的不同
		//第一个参数时上下文对象,第二个参数时字符串资源数组,第三个参数时样式(采用系统提供)
		ArrayAdapter<CharSequence> spaa = ArrayAdapter.createFromResource(this,R.array.names,android.R.layout.simple_spinner_item);
		//设置每个下拉列表项的布局,此处采用的android系统提供的布局文件
		spaa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		spSecond = (Spinner)findViewById(R.id.spinnersecond);
		//为第二个下拉列表设置数据适配器
		spSecond.setAdapter(spaa);	
		spFirst = (Spinner)findViewById(R.id.spinnerfirst);
		//为第一个下拉列表注册选择项监听器
		spFirst.setOnItemSelectedListener(new OnItemSelectedListener() {
			@Override
			public void onItemSelected(AdapterView<?> arg0, View arg1,int arg2, long arg3) {
				//AdapterView是下拉列表对象,getItemAtPosition可以得到当前选择的项(编号是arg2)
				 Toast.makeText(MainActivity.this, "你选择了"+arg0.getItemAtPosition(arg2).toString(),Toast.LENGTH_LONG).show();
			}
			@Override
			public void onNothingSelected(AdapterView<?> arg0) {
				//未实现
			}
		});
	}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
}
    运行效果:

                                                        

二、DatePicker和TimerPicker

activity_main.xml布局文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10pt"
        android:text="拖动条和评分条" />
    <SeekBar
        android:id="@+id/seekbar"
        android:layout_width="fill_parent"
        android:layout_height="40dp"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="22dp" />
    <RatingBar
        android:id="@+id/ratingbar"
        android:numStars="5"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:layout_alignLeft="@+id/seekbar"
        android:layout_below="@+id/seekbar"/>
</RelativeLayout>

MainActivity.java文件:

package com.example.datapickertest;

import java.util.Calendar;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.DatePicker;
import android.widget.DatePicker.OnDateChangedListener;
import android.widget.Toast;

public class MainActivity extends Activity {
	private DatePicker dp;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		dp = (DatePicker)findViewById(R.id.datepicker);
		//得到当前系统时间
		Calendar c = Calendar.getInstance();
		//把时间选择器的初始日期设置为系统当前日期
		dp.init(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH), new OnDateChangedListener(){
			@Override
			public void onDateChanged(DatePicker view, int year,int monthOfYear, int dayOfMonth) {
				  Toast.makeText(MainActivity.this, "Your Birthday is "+year+"/"+monthOfYear+"/"+dayOfMonth, Toast.LENGTH_LONG).show();
			}
		});
	}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
}

        运行效果:

                          

三、SeekBar和RatingBar

activity_main.xml布局文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="10pt"
        android:text="拖动条和评分条" />
    <SeekBar
        android:id="@+id/seekbar"
        android:layout_width="fill_parent"
        android:layout_height="40dp"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="22dp" />
    <RatingBar
        android:id="@+id/ratingbar"
        android:numStars="5"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:layout_alignLeft="@+id/seekbar"
        android:layout_below="@+id/seekbar"/>
</RelativeLayout>

MainActivity.java文件:

package com.example.seekbartest;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.RatingBar;
import android.widget.RatingBar.OnRatingBarChangeListener;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.Toast;

public class MainActivity extends Activity {
	private SeekBar sb;
	private RatingBar rb;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//实例化拖动条
		sb = (SeekBar)findViewById(R.id.seekbar);
		//实例化评分条
		rb = (RatingBar)findViewById(R.id.ratingbar);
		//为拖动条设置状态改变监听器
		sb.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
			@Override
			public void onStopTrackingTouch(SeekBar seekBar) {
				//停止拖动时调用该方法
				Toast.makeText(MainActivity.this, "拖动条的值为:"+seekBar.getProgress(), Toast.LENGTH_LONG).show();
			}	
			@Override
			public void onStartTrackingTouch(SeekBar seekBar) {	
				//开始拖动时调用该方法
			}
			@Override
			public void onProgressChanged(SeekBar seekBar, int progress,
					boolean fromUser) {      
				//拖动条的值改变时调用该方法
			}
		});
		//为评分条设置匿名内部类监听器
		rb.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {
			
			@Override
			public void onRatingChanged(RatingBar ratingBar, float rating,boolean fromUser) {
			        Toast.makeText(MainActivity.this , "评分条的值为:"+rating,Toast.LENGTH_LONG).show();    	
			}
		});
	}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
}
         运行效果:

                                                             

四、TabHost

activity_main.xml布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >
	<TabHost 
    	android:id="@+id/tabhost"
     	android:layout_width="fill_parent"
     	android:layout_height="fill_parent" >
    		<LinearLayout
            	 android:layout_width="fill_parent"
           		 android:layout_height="fill_parent" 
           		 android:orientation="vertical">
           		 	<TabWidget
                		android:id="@android:id/tabs"
               			android:layout_width="wrap_content"
                		android:layout_height="wrap_content">
           			</TabWidget>
            		<FrameLayout
                		android:id="@android:id/tabcontent"
                		android:layout_width="fill_parent"
               			android:layout_height="fill_parent" 
               			android:layout_weight="1">
               			      <TextView 
               			          android:id="@+id/textview1"
               			          android:layout_width="wrap_content"
               			          android:layout_height="wrap_content" 
               			          android:textSize="12pt"
               			          android:text="第一个分页" />
               			      <TextView 
               			          android:id="@+id/textview2"
               			          android:layout_width="wrap_content"
               			          android:layout_height="wrap_content" 
               			          android:textSize="12pt"
               			          android:text="第二个分页"  />
               			      <TextView 
               			          android:id="@+id/textview3"
               			          android:layout_width="wrap_content"
               			          android:layout_height="wrap_content" 
               			          android:textSize="12pt"
               			          android:text="第三个分页"  />
               			      <TextView 
               			          android:id="@+id/textview4"
               			          android:layout_width="wrap_content"
               			          android:layout_height="wrap_content"  
               			          android:textSize="12pt"
               			          android:text="第四个分页" />
           			</FrameLayout>
 			</LinearLayout>
	</TabHost>
</LinearLayout>
MainActivity.java文件:

package com.example.tabhosttest;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;
import android.widget.Toast;

public class MainActivity extends Activity {
    private TabHost th;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//实例化TabHost对象
		th = (TabHost)findViewById(R.id.tabhost);
		th.setup();
		th.addTab(th.newTabSpec("tab1").setIndicator("文件").setContent(R.id.textview1));
		th.addTab(th.newTabSpec("tab2").setIndicator("分类").setContent(R.id.textview2));
		th.addTab(th.newTabSpec("tab3").setIndicator("精品").setContent(R.id.textview3));
		th.addTab(th.newTabSpec("tab4").setIndicator("下载").setContent(R.id.textview4));
		//设置监听器
		th.setOnTabChangedListener(new OnTabChangeListener() {
			@Override
			public void onTabChanged(String tabId) {
				  Toast.makeText(MainActivity.this, "你选择个Tab: "+th.getCurrentTabTag(), Toast.LENGTH_LONG).show();
			}
		});
	}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
}
    运行效果:

                  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值