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

来源:互联网 发布:英雄无敌6加点 知乎 编辑:程序博客网 时间:2024/05/21 12:48
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的布局。
<!-- 静态的加载布局文件--><includeandroid: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 0