因胸联盟 发表于 2015-1-18 11:37:12

IOS教程之Android之旅九 ExpandableList、SeekBar、RatingBar、DatePickerDialog控件具体先容仓 ...

继承自相应的不可变类比如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

小女巫 发表于 2015-1-21 07:12:54

中国如今已然发展成为一个软件大国,软件人才的数量跃居全球之首。当然,在苹果平台的开发领域,也保持了相当强劲的发展势头。然而,很多初入iOS开发门槛的开发者,

变相怪杰 发表于 2015-1-22 06:22:08

然而,在vmware软件环境下,安装Mac OS X操作系统也是一件非常复杂的事情,而且还有可能花费了大量时间,最后却跑不起来。笔者也是经过了大量的实践,

灵魂腐蚀 发表于 2015-1-25 18:39:07

这个办法就是在WindowsXP或Win7的电脑上,使用vmware虚拟机来搭建一个真实的Mac OS X环境。

山那边是海 发表于 2015-2-3 13:06:37

看《iPhone 4与iPad开发基础教程》,跟着一步步来

金色的骷髅 发表于 2015-2-9 01:46:14

iPhone文件系统:创建、重命名以及删除文件,NSFileManager中包含了用来查询单词库目录、创建、重命名、删除目录以及获取/设置文件属性的方法(可读性,可编写性等等)。

再现理想 发表于 2015-2-26 03:45:40

看完这个你就可以有多种选择来踏入做应用的阶段

只想知道 发表于 2015-2-26 06:12:17

中国如今已然发展成为一个软件大国,软件人才的数量跃居全球之首。当然,在苹果平台的开发领域,也保持了相当强劲的发展势头。然而,很多初入iOS开发门槛的开发者,

若相依 发表于 2015-3-4 10:59:41

最后在做项目的时候一定要认真对待,毕竟这个直接和你的就业挂钩,这也是锻炼你实际操作的能力。

精灵巫婆 发表于 2015-3-11 09:03:23

培训时可以选择安卓,iOS,Java,因为实习的时候我选了安卓,当时实习时间只有三周,学的晕头转向,而java我也没学过,iOS的基础是C语言,这个大学里还是学过的,于是选择了iOS。

分手快乐 发表于 2015-3-17 21:08:31

中国如今已然发展成为一个软件大国,软件人才的数量跃居全球之首。当然,在苹果平台的开发领域,也保持了相当强劲的发展势头。然而,很多初入iOS开发门槛的开发者,

因胸联盟 发表于 2015-3-22 20:58:56

自从苹果公司开放iOS SDK以来,大量的国内外的软件开发者将关注的目光聚集在苹果的iOS平台上。由于iPhone和iPad自一出现就给人带来了颠覆性的感觉

柔情似水 发表于 2015-3-27 12:06:42

到大三时,学院与我去培训的机构成立了实习基地,并让我们寒假去实习了一段时间,感觉还不错,于是在大四的时候去培训了

冷月葬花魂 发表于 2015-4-1 11:17:21

每个行业都一样,想要一天学有所成是不可能的,一定要做好努力的准备,做ios不是简单的学会oc语言。不怕多走弯路,就怕不肯动手。

简单生活 发表于 2015-4-1 21:20:50

iPhone文件系统NSFileManager讲解是本文要介绍的内容,主要是通过iphone文件系统来学习NSFileManager的使用方法,具体内容来看本文详解。

小魔女 发表于 2015-4-11 08:10:08

看完这个你就可以有多种选择来踏入做应用的阶段

莫相离 发表于 2015-4-12 16:03:03

培训时可以选择安卓,iOS,Java,因为实习的时候我选了安卓,当时实习时间只有三周,学的晕头转向,而java我也没学过,iOS的基础是C语言,这个大学里还是学过的,于是选择了iOS。

爱飞 发表于 2015-4-17 21:12:13

在此,某不才愿将安装成功的Mac OS X系统的vmware虚拟机向有志学习iOS开发的各位学友们免费开放出来,经测试,可以在WindowsXP/Win7系统上完美运行,即便你的机器只有2GB内存。

透明 发表于 2015-5-1 11:39:54

学习ios没什么捷径,关键在于多动手敲,曾看到前辈开玩笑说怎么快速学会某技术,答案是:“提高打字速度,快点写代码就能快点学会了”。

愤怒的大鸟 发表于 2015-5-3 07:36:34

到大三时,学院与我去培训的机构成立了实习基地,并让我们寒假去实习了一段时间,感觉还不错,于是在大四的时候去培训了
页: [1] 2
查看完整版本: IOS教程之Android之旅九 ExpandableList、SeekBar、RatingBar、DatePickerDialog控件具体先容仓 ...