《老罗Android》学习之UI DatePicker、AnalogClock

1. DatePicker   TimePicker
查看这篇文章:控件之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;
        }
    }
}




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值