1. DatePicker TimePicker
查看这篇文章:控件之DatePicker、TimePicker学习
2. AnalogClock和DigitalClock
1.布局
3. RatingBar
RatingBar主要用在电子相册、网上书店和对文章进行评分的功能。
1.布局
垂直滚动条只要在布局中实现就可以了。要嵌套一个布局。
水平滚动控件,布局设定为水平方向 。
1. 用include 静态加载布局
在一个布局中加载另一个布局,假设要在main.xml中加载next.xml的布局。
把上面的部分换成以下内容
3.代码
要让动态布局显示时调用ViewStub.inflate或ViewStub.setVisibility(View.VISIBILE)方法ViewStub才会装载引用的控件,要隐藏时调用ViewStub.setVisibility(View.GONE).
7. ViewPager多页面滑动
1.布局
在main.xml中的LinearLayout中加入
2.Activity
查看这篇文章:控件之DatePicker、TimePicker学习
2. AnalogClock和DigitalClock
1.布局
<AnalogClock android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<DigitalClock android:layout_width="wrap_content"
android:layout_height="wrap_content" android:textSize="18dp"></DigitalClock>
2. 用时间和日期对话框进行设置
public class Main extends Activity implements OnClickListener {
private Button button1, button2;
private int hourOfDay, minute;
private int year, monthOfYear, dayOfMonth;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button1 = (Button) this.findViewById(R.id.button1);
button2 = (Button) this.findViewById(R.id.button2);
button1.setOnClickListener(this);
button2.setOnClickListener(this);
// 获得当前的时间,获得小时和分钟
Calendar calendar = Calendar.getInstance();
hourOfDay = calendar.get(Calendar.HOUR_OF_DAY);
minute = calendar.get(Calendar.MINUTE);// 获得当前的秒
year = calendar.get(Calendar.YEAR);
monthOfYear = calendar.get(Calendar.MONTH);
dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
}
public void onClick(View v) {
switch (v.getId()) {
case R.id.button1:
TimePickerDialog timePickerDialog = new TimePickerDialog(Main.this,
new MyTimePickerDialog(), hourOfDay, minute, true);
timePickerDialog.show();// 显示对话框
break;
case R.id.button2:
DatePickerDialog datePickerDialog = new DatePickerDialog(Main.this,
new MyDatePickerDialog(), year, monthOfYear, dayOfMonth);
datePickerDialog.show();// 显示对话框
break;
}
}
public class MyDatePickerDialog implements DatePickerDialog.OnDateSetListener {
public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) {
Toast.makeText( Main.this,"year:" + year + "monthOfYear:" + monthOfYear
+ "dayOfMonth:" + dayOfMonth, 1).show();
}
}
public class MyTimePickerDialog implements TimePickerDialog.OnTimeSetListener {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
Toast.makeText(Main.this,"hourOfDay:" + hourOfDay + "minute:" + minute, 1).show();
}
}
}
查看这篇文章:AnalogClock & DigitalClock 的设置小结
3. RatingBar
RatingBar主要用在电子相册、网上书店和对文章进行评分的功能。
1.布局
<RatingBar android:id="@+id/ratingBar" android:layout_width="fill_parent"
android:layout_height="wrap_content"></RatingBar>
2.代码
public class Main extends Activity implements OnRatingBarChangeListener {
private RatingBar ratingBar;
public void onCreate(Bundle savedInstanceState) {
............
ratingBar.setMax(100);// 设置最大刻度
ratingBar.setProgress(20);// 设置当前的刻度
ratingBar.setOnRatingBarChangeListener(this);
}
public void onRatingChanged(RatingBar ratingBar, float rating,boolean fromUser) {
int progress = ratingBar.getProgress();
Toast.makeText(Main.this, "progress:" + progress + "rating:" + rating,1).show();
}
}
4.ScrollView
垂直滚动条只要在布局中实现就可以了。要嵌套一个布局。
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="wrap_content">
<LinearLayout android:layout_width="fill_parent"
android:orientation="vertical" android:layout_height="fill_parent">
................
</LinearLayout>
</ScrollView>
5. HorizontalScrollView
水平滚动控件,布局设定为水平方向 。
<?xml version="1.0" encoding="utf-8"?>
<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="wrap_content">
<LinearLayout android:orientation="horizontal"
android:layout_width="fill_parent" android:layout_height="fill_parent">
.....................
</LinearLayout>
</HorizontalScrollView>
6.ViewStub惰性装载控件
1. 用include 静态加载布局
在一个布局中加载另一个布局,假设要在main.xml中加载next.xml的布局。
<!-- 静态的加载布局文件-->
<include
android:layout_width="wrap_content"
android:layout_height="wrap_content"
layout="@layout/next"
/>
2.动态加载布局
把上面的部分换成以下内容
<!-- 动态的加载布局文件-->
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#FFCCDD"
>
<ViewStub
android:id="@+id/stub"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout="@layout/next"/>
</LinearLayout>
ViewtSub的功能和<include>的功能类似,也是实现引用另外一个布局。但是唯一不同的是ViewStub并不会马上装载引用布局文件,只有在调用了ViewStub.inflate或ViewStub.setVisibility(View.VISIBILE)方法ViewStub才会装载引用的控件。
3.代码
要让动态布局显示时调用ViewStub.inflate或ViewStub.setVisibility(View.VISIBILE)方法ViewStub才会装载引用的控件,要隐藏时调用ViewStub.setVisibility(View.GONE).
7. ViewPager多页面滑动
1.布局
在main.xml中的LinearLayout中加入
<android.support.v4.view.ViewPager
android:id="@+id/ViewPager"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" >
<android.support.v4.view.PagerTitleStrip
android:id="@+id/pagertitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top" />
</android.support.v4.view.ViewPager>
再创建3个布局文件,tab1,tab2,tab3.
2.Activity
public class MainActivity extends Activity{
private ViewPager viewPager;
private PagerTitleStrip pagerTitleStrip;//表示滑动的每一页的标题
private List<View> list; //表示装载滑动的布局
private List<String> titleList; //表示滑动的每一页的标题
public void onCreate(Bundle savedInstanceState){
............
//动态加载布局
View view1=LayoutInflater.from(MainActivity.this).inflate(R.layout.tab1,null);
View view2=LayoutInflater.from(MainActivity.this).inflate(R.layout.tab2,null);
View view3=LayoutInflater.from(MainActivity.this).inflate(R.layout.tab3,null);
list=new ArrayList<View>;
list.add(view1);
list.add(view2);
list.add(view3);
titleList=new ArrayList<String>();
titleList.add("titl1");
titleList.add("titl2");
titleList.add("titl3");
viewPager.setAdapter(new MyAdapter())';'
}
class MyAdapter extends PagerAdapter{
public int gerCount(){
return list.size();
}
public void destroyItem(ViewGroup container,int position,Object object){
super.destroyItem(container,position,object);
((ViewPager)container).removeView(list.get(position));
}
public CharSequence getPageTitle(int position){
return titleList.get(position);
}
public Object instantiateItem(ViewGroup container,int position){
((ViewPager)container).addView(list.get(position));
return list.get(position);
}
public boolean isViewFromObject(View arg0,Object arg1){
return arg0==arg1;
}
}
}