|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
继承自相应的不可变类比如NSMutableArray继承自NSArray他们都添加了可以改变对象内容的方法比如-(void)addObject:(id)anObject添加对象-(void)removeObject:(id)anObject删除对象上面只是一个大概的总结接上篇博客中的控件先容:
1、ExpandableListView,这是一个伸缩睁开页列表控件,效果以下:
<br>
上面让我们看看怎样完成的吧:
1、起首界说我们的结构文件,个中有我们的main.xml文件将我们的ExpandableListView控件到场出来,还要有我们页面初始化显现出来的group1、group2这些数据的结构文件,界说为group.xml,还要有点击睁开group1后child1data1等这些数据的结构文件,界说为child.xml,上面我们分离给它们举行界说:
main.xml:
- <?xmlversion="1.0"encoding="utf-8"?>
- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical">
- <ExpandableListView
- android:id="@id/android:list"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:drawSelectorOnTop="false"/>
- <TextView
- android:id="@id/android:empty"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:text="NoData"/>
- </LinearLayout>
在main.xml中到场我们的ExpendableListView控件下面的TextView中的android:text="NoData"是默许有数据的时分所显现的文本信息
group.xml:
- <?xmlversion="1.0"encoding="utf-8"?>
- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical">
- <TextView
- android:id="@+id/groupTo"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:paddingLeft="60px"
- android:paddingTop="10px"
- android:paddingBottom="10px"
- android:textSize="26sp"
- android:text="NoData"/>
- </LinearLayout>
child.xml:
- <?xmlversion="1.0"encoding="utf-8"?>
- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical">
- <TextView
- android:id="@+id/childTo"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:paddingLeft="50px"
- android:paddingTop="5px"
- android:paddingBottom="5px"
- android:textSize="20sp"
- android:text="NoData"/>
- </LinearLayout>
好了,把各部散布局界说好了,上面我们经由过程代码显现我们要的信息吧:
我们创立的Activity必需承继自:ExpendableListActivity
- /**
- *创立一个Activity,承继自ExpandableListActivity
- *@authorAdministrator
- *
- */
- publicclassMainActivityextendsExpandableListActivity{
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- //界说一个List,该List为一级条目供应数据
- List<Map<String,String>>groups=newArrayList<Map<String,String>>();
- Map<String,String>group1=newHashMap<String,String>();
- group1.put("group","group1");
- Map<String,String>group2=newHashMap<String,String>();
- group2.put("group","group2");
- groups.add(group1);
- groups.add(group2);
- //界说一个List,该List为第一个一级条目供应二级条目数据
- List<Map<String,String>>child1=newArrayList<Map<String,String>>();
- Map<String,String>child1Data1=newHashMap<String,String>();
- child1Data1.put("child","child1Data1");
- child1.add(child1Data1);
- Map<String,String>child1Data2=newHashMap<String,String>();
- child1Data2.put("child","child1Data2");
- child1.add(child1Data2);
- //界说一个List,该List为第二个一级条目供应二级条目数据
- List<Map<String,String>>child2=newArrayList<Map<String,String>>();
- Map<String,String>child2Data1=newHashMap<String,String>();
- child2Data1.put("child","child2Data1");
- child2.add(child2Data1);
- //界说一个List,该List对象用来存储一切的二级条目数据
- List<List<Map<String,String>>>childs=newArrayList<List<Map<String,String>>>();
- childs.add(child1);
- childs.add(child2);
- /**
- *天生一个SimpleExpandableListAdapter对象,参数先容
- *1、以后高低文对象
- *2、一级条目数据
- *3、用来设置一级条目款式的结构文件
- *4、指定一级条目标数据key,要与Map中的能够一样
- *5、指定一级条目数据显现控件的id
- *6、二级条目数据
- *7、用来设置二级条目款式的结构文件
- *8、指定二级条目标数据key,要与Map中的能够一样
- *9、指定二级条目数据显现控件的id
- */
- SimpleExpandableListAdaptersela=newSimpleExpandableListAdapter
- (this,groups,R.layout.group,newString[]{"group"},newint[]{R.id.groupTo},
- childs,R.layout.child,newString[]{"child"},newint[]{R.id.childTo});
- //将SimpleExpandableListAdapter对象设置给以后的ExpandableListActivity
- setListAdapter(sela);
- }
- }
具体解答见代码中的正文部分,运转程序就能够看到我们之前谁人页面的效果了!
2、SeekBar和RatingBar:分离暗示可拖拽的进度条和星级评分条,显现效果以下:
<br>
信任人人看到图片后就应当晓得它所暗示的是甚么了,上面我们来看看它是怎样完成的吧,很复杂哦!
1、界说结构文件,main.xml在结构文件中到场:SeekBar和RatingBar控件:
- <?xmlversion="1.0"encoding="utf-8"?>
- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical">
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="测试SeekBar"/>
- <SeekBar
- android:id="@+id/seekBarId"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"/>
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="测试RatingBar"/>
- <!--numStars:初始化显现几颗星stepSize:挪动后增添或削减的巨细-->
- <RatingBar
- android:id="@+id/ratingBarId"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:numStars="5"
- android:stepSize="1.0"/>
- </LinearLayout>
2、经由过程代码把持显现和到场响应的办法:
- packagecom.harder.xin;
- importandroid.app.Activity;
- importandroid.os.Bundle;
- importandroid.widget.RatingBar;
- importandroid.widget.SeekBar;
- publicclassMainActivityextendsActivity{
- privateSeekBarseekBar=null;
- privateRatingBarratingBar=null;
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- seekBar=(SeekBar)findViewById(R.id.seekBarId);
- //设置SeekBar的最年夜值
- seekBar.setMax(100);
- //为进度条绑定监听器
- seekBar.setOnSeekBarChangeListener(newSeekBarChangeListener());
- ratingBar=(RatingBar)findViewById(R.id.ratingBarId);
- //为评分条绑定监听器
- ratingBar.setOnRatingBarChangeListener(newRatingBarChangeListener());
- }
- //监听器,监听进度条进度的改动
- classSeekBarChangeListenerimplementsSeekBar.OnSeekBarChangeListener{
- //当进度条进度产生改动的时分触发该事务
- //fromUser是不是由用户触发,true则由用户触发,false,多是由程序把持,比方Handler
- @Override
- publicvoidonProgressChanged(SeekBarseekBar,intprogress,
- booleanfromUser){
- System.out.println("progress-->"+progress);
- }
- //当用户入手下手滑东滑块的时分触发的事务
- @Override
- publicvoidonStartTrackingTouch(SeekBarseekBar){
- System.out.println("start-->"+seekBar.getProgress());
- }
- //当用户中断滑东滑块的时分触发的事务
- @Override
- publicvoidonStopTrackingTouch(SeekBarseekBar){
- System.out.println("stop-->"+seekBar.getProgress());
- }
- }
- classRatingBarChangeListenerimplementsRatingBar.OnRatingBarChangeListener{
- //当Rating产生改动的时分触发该事务
- @Override
- publicvoidonRatingChanged(RatingBarratingBar,floatrating,
- booleanfromUser){
- System.out.println("rating-->"+rating);
- }
- }
- }
信任人人看代码正文基础上就可以分明他们的意义了,这里就未几形貌了!!
3、DatePickerDialog和TimePickerDialog,见名之意,他们就是用来显现和设置日期和工夫的对话框咯,页面展现效果以下:
<br>
<br>
呵呵....他们完成办法也很复杂哦:
在main.xml中界说两个按钮,分离用来测试他们:
- <?xmlversion="1.0"encoding="utf-8"?>
- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical">
- <Button
- android:id="@+id/DateButton"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="显现和设置日期"/>
- <Button
- android:id="@+id/TimeButton"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="显现和设置工夫"/>
- </LinearLayout>
上面在代码中把持:
如果你现在开始学到编出像样的APPiOS5可能已经普及了可以直接用ARC(另之前对ARC的了解很粗浅现在开发程序完全可以直接ARCiOS4不支持的weak是有办法替代的用unsafe_unretained |
|