Android开发实战经典---自己学习的笔记总结.doc_第1页
Android开发实战经典---自己学习的笔记总结.doc_第2页
Android开发实战经典---自己学习的笔记总结.doc_第3页
Android开发实战经典---自己学习的笔记总结.doc_第4页
Android开发实战经典---自己学习的笔记总结.doc_第5页
已阅读5页,还剩217页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Android开发实战经典李兴华学习基础:Java开发实战经典、Java Web开发实战经典,熟练掌握面向对象的各个概念以及应用案例、MVC设计模式、HTML、JavaScript、XML等基础。2013-3-21View组件1.View组件包含了几乎所有的图形显示组件,这些类都在android.widget包中定义的。在Android组件中,View是一个最大的类,所有的布局管理器、显示组件都是View类的子类,并且View类本身实现了大量的接口。显示文本组件:TextView:1.主要用于显示文本,实际上就是提供一个标签的显示操作。2.在布局管理器中,使用超链接:主要是用来编辑TextView,在中间加上 android:autoLink=”all”,/如果有网址则进行显示;这样可以让网址以超链接的形式供用户直接使用。按钮组件:Button:1.Button是TextView类的子类,实际上所谓的按钮就是一个特殊的文本组件,此类中定义的属性与TextView相同。编辑框:EditText:1.EditText是TextView的子类,。2.在main.xml中编写方法: android:selectAllOnFocus=”true”,/默认选中,并设为焦点;android:password=”true”,/密文形式显示文本;android:numeric=”integer”;/只能输入数字;android:editable=”false”,设置为不可编辑的状态单选按钮:RadioGroup1.RadioGroup提供的只是一个单选按钮的容器,只有在此容器中配置多个按钮组件之后才能使用,而要想设置单选按钮的内容,需要使用RadioButton类,并且此组件在定义时必须编写在RadioGroup组件中。设置默认选中的组件:android:checkedButton=”+id/male”/默认选中组件ID复选框:CheckBoxCheckBox组件不需要首先定义一个容器再设置若干个按钮,直接使用CheckBox类定义即可。设置默认选中:android:checked=”true”;下拉列表框:Spinner1.可以直接在main.xml文件中定义节点,但是在定义此元素时不能直接设置其显示的列表项,关于下拉列表框的列表项有两种配置方式。方式一:直接通过资源文件配置:如,定义一个valuescity_data.xml文件,在定义数据内容时需要使用元素指定,北京上海南京红色绿色蓝色此时定义的是string-array的根节点,表示其中配置的是一个数组的集合,而其中的每一个节点表示每一个列表项的内容,随后在layoutmain.xml文件中定义节点时,直接使用android:entries=”array/city_labels”属性即可读取信息。方式二:通过android.widget.ArrayAdapter类读取资源文件或指定具体设置的数据。如果通过配置main.xml文件可以使用android:entries属性设置内容,但如果是在Activity中编写的,必须依靠ArrayAdapter类完成。此类有两个主要的功能:读取资源文件中定义的列表项或者是通过List集合设置列表项。本程序分别使用定义了3个下拉列表框:a.列表框1,+id/mycity:直接通过android:entries=array/city_labels读取资源文件;b.列表框2,+id/mycolor:只是定义了一个下拉别表框组件,此组件内容要通过程序读取资源文件设置。;c.列表框3,+id/myedu:定义了一个下拉列表框组件,以后通过程序进行内容的设置。public class MySpinnerDemo extends Activity private Spinner spiColor = null; / 表示要读取的颜色列表框private Spinner spiEdu = null; / 定义下拉列表private ArrayAdapter adapterColor = null; / 下拉列表内容适配器private ArrayAdapter adapterEdu = null; /下拉列表内容适配器private List dataEdu = null; / 定义集合保存下拉列表选项Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);super.setContentView(R.layout.main);this.spiColor = (Spinner) super.findViewById(R.id.mycolor); / 取得颜色的下拉框this.spiColor.setPrompt(请选择您喜欢的颜色:);this.adapterColor = ArrayAdapter.createFromResource(this,R.array.color_labels, android.R.layout.simple_spinner_item); / 实例化了ArrayAdapterthis.adapterColor.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); / 设置列表显示风格this.spiColor.setAdapter(this.adapterColor); / 设置下拉列表选项/ 配置List集合包装的下拉框内容this.dataEdu = new ArrayList();this.dataEdu.add(大学);this.dataEdu.add(研究生);this.dataEdu.add(高中);this.spiEdu = (Spinner) super.findViewById(R.id.myedu); / 取得下拉框this.spiEdu.setPrompt(请选择您喜欢的学历:);this.adapterEdu = new ArrayAdapter(this,android.R.layout.simple_spinner_item, this.dataEdu); / 准备好下拉列表框的内容this.adapterEdu .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); / 换个风格this.spiEdu.setAdapter(this.adapterEdu);图片视图:ImageView1.主要功能是为图片展示提供一个容器。保存在drawable-*文件夹中的图片名称,只能由字母、数字、“_” 、“.” 、组成。android:src=”drawable/mldn_3g”/从drawable中读取图片ID图片按钮:ImageButton用法同Button,只不过该Button带有图片。时间选择器:TimePicker1.使用TimePicker可以进行时间的快速调整。在配置文件中,组件的默认运行方式为12小时制,编程实现24小时制的显示如下。public class MyTimePicker extends Activity private TimePicker mytp = null;Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);super.setContentView(R.layout.main);this.mytp = (TimePicker) super.findViewById(R.id.tp2) ;/ 取得组件this.mytp.setIs24HourView(true) ;/ 设置为24小时制this.mytp.setCurrentHour(18) ;/ 设置时this.mytp.setCurrentMinute(30) ;/ 设置分日期选择器:DatePicker1.可以完成年、月、日的设置。public class MyDatePickerDemo extends Activity private DatePicker mydp = null;Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);super.setContentView(R.layout.main);this.mydp = (DatePicker) super.findViewById(R.id.dp2); / 取得组件this.mydp.updateDate(1998, 7, 27); / 更新日期布局管理器线性布局管理器:LinearLayout1.分两种形式:垂直排列和水平排列。只能进行单行布局。在程序中定义布局:public class MyLinearLayoutDemo extends Activity Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);LinearLayout layout = new LinearLayout(this); / 定义线性布局管理器LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.FILL_PARENT); / 先定义布局管理器的参数layout.setOrientation(LinearLayout.VERTICAL); / 所有组件采用垂直方式摆放/ 下面要定义显示组件的布局管理器,为了简单,本次只定义一个TextView组件LinearLayout.LayoutParams txtParam = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);/ 定义组件的布局管理器参数TextView txt = new TextView(this); / 定义文本显示组件txt.setLayoutParams(txtParam); / 配置文本显示组件的参数txt.setText(北京魔乐科技软件学院(MLDN)); / 配置显示文字txt.setTextSize(20);layout.addView(txt, txtParam); / 增加组件super.setContentView(layout, param); / 增加新的布局管理器框架布局管理器:FramLayout1.所有的组件放在左上角,逐个覆盖。在程序中定义布局:public class MyFrameLayoutDemo extends Activity Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);FrameLayout layout = new FrameLayout(this); / 定义帧布局管理器FrameLayout.LayoutParams layoutParam = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.FILL_PARENT); / 定义布局管理器的参数FrameLayout.LayoutParams viewParam = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT); / 定义显示组件的参数ImageView img = new ImageView(this); / 定义图片组件img.setImageResource(R.drawable.mldn_3g); / 定义显示的图片EditText edit = new EditText(this); / 定义文本输入组件edit.setText(请输入您的姓名.); / 设置显示的文字Button but = new Button(this); / 定义按钮but.setText(按我); / 设置按钮的文字layout.addView(img, viewParam); / 增加组件layout.addView(edit, viewParam); / 增加组件layout.addView(but, viewParam); / 增加组件super.setContentView(layout, layoutParam); / 向屏幕上增加布局管理器表格布局管理器:TableLayout1.在该布局管理器中,要使用TableRow进行表格行的控制,之后所有的组件要在TableRow中增加。表格布局主要用于列表操作上。2.如果数据内容过多显示不完整,可以用shrinkColumns属性将其定义成可收缩列。android:shrinkColumn=”3”;/定义为可收缩,可根据文字信息调整显示格式。让某个列不显示可以使用collapseColumns;如果要想多个列不显示,直接使用逗号分开即可。 android:collapseColumns=”0,3”/设置第1,4列不显示3.如果想为表格的显示设置背景图片,可以使用android:background 属性指定背景图片,但是此时背景图片应该首先保存在resdrawable-*文件夹中。4.在程序中定义布局:public class MyTableLayoutDemo extends Activity private String titleData = new String ID, 姓名, EMAIL, 地址 , MLDN, 魔乐科技, ,北京西城区甲11号德外大街德胜科技园美江大厦 A座 - 6层 MLDN魔乐科技 , LXH, 李兴华, , 天津 ; / 定义要显示的数据Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);TableLayout layout = new TableLayout(this); / 定义表格布局TableLayout.LayoutParams layoutParam = new TableLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.FILL_PARENT); / 定义布局管理器的参数layout.setBackgroundResource(R.drawable.mldn_logo); / 定义背景图片for (int x = 0; x this.titleData.length; x+) / 循环设置表格行TableRow row = new TableRow(this); / 定义表格行for (int y = 0; y this.titleDatax.length; y+) TextView text = new TextView(this);text.setText(this.titleDataxy); / 设置文本内容row.addView(text, y); / 加入一个编号layout.addView(row); / 向表格之中增加若干个表格行super.setContentView(layout, layoutParam); / 设置显示相对布局管理器:RelativeLayout1.相对布局是参考某一控件对组件进行拜访,可以通过控制将组件摆放在一个指定参考组件的上、下、左、右等位置,这些操作可以直接通过各个组件提供的属性完成。在程序中进行布局:public class MyRelativeLayoutDemo extends Activity Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);super.setContentView(R.layout.main); / 要读取已经存在的布局管理器RelativeLayout rl = (RelativeLayout) super.findViewById(R.id.mylayout); / 找到布局管理器RelativeLayout.LayoutParams param = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.FILL_PARENT); / 定义参数param.addRule(RelativeLayout.BELOW, R.id.mybut); / 新的组件放在mybut组件之下param.addRule(RelativeLayout.RIGHT_OF, R.id.imga); / 放在第一张图片的右边EditText text = new EditText(this); / 输入文本rl.addView(text, param); / 是向一个布局管理器之中增加组件布局管理器的嵌套绝对定位布局管理器:AbsoluteLayout1.采用一种坐标定位显示的布局管理器,它会将屏幕按X坐标和Y坐标的形式对组件进行排列。要想使用绝对定位布局管理器,需要每一个组件中的以下两个属性支持。android:layout_x:组件在X轴上的坐标;android:layout_y:组件在Y轴上的坐标。在实际开发中不建议使用绝对定位的布局管理器。事件处理1.所有的事件产生之后,将自动调用对应的事件处理方式,如果已经存在事件的监听操作,则使用指定的事件处理方式,通过事件监听器对事件进行处理;如果没有相应的处理程序,则放弃该事件。单击事件1.使用按钮触发一些事件,可以通过单击事件完成。单击事件使用View.OnClickListener接口进行事件的处理。此接口定义为:public static interface View.OnClickListenerpublic void onClick(View v); 要想设置单击事件操作接口,直接使用setOnClickListener()方法即可,当事件触发之后,使用onClick()方法执行具体的处理操作。OnClickListener是使用static声明的内部接口,属于内部静态接口,此接口相当于一个外部接口。2.改变屏幕显示方向:setRequestedOrientation(int requestedOrientation)方法:设置显示方向;getRequestedOrientation()方法:取得当前屏幕方向onConfigurationChanged(Configuration newConfig)方法:系统设置改变时触发此事件,表示对系统设置的改变进行监听。public class MyClickDemo extends Activity private Button change = null;private ImageView img = null;Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);super.setContentView(R.layout.main);this.change = (Button) super.findViewById(R.id.change); / 取得按钮this.img = (ImageView) super.findViewById(R.id.img); / 取得图片this.change.setOnClickListener(new MyOnClickListenerImpl(); / 设置监听操作private class MyOnClickListenerImpl implements OnClickListener / 单击事件public void onClick(View v) if (MyClickDemo.this.getRequestedOrientation() = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) / 无法进行画面的旋转MyClickDemo.this.change.setText(错误:无法改变屏幕方向。); else if (MyClickDemo.this.getRequestedOrientation() = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) / 现在的方向是横屏显示MyClickDemo.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); / 变为竖屏显示 else if (MyClickDemo.this.getRequestedOrientation() = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) / 如果为竖屏显示MyClickDemo.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); / 变为横屏显示Overridepublic void onConfigurationChanged(Configuration newConfig) / 表示的是系统设置修改的时候触发if (newConfig.orientation = Configuration.ORIENTATION_LANDSCAPE) / 现在的屏幕方向是横屏MyClickDemo.this.change.setText(改变屏幕方向为竖屏显示(当前为横屏显示));MyClickDemo.this.img.setImageResource(R.drawable.mldn_landscape);/ 显示横屏图片 else if (newConfig.orientation = Configuration.ORIENTATION_PORTRAIT) / 现在竖屏MyClickDemo.this.change.setText(改变屏幕方向为竖屏显示(当前为横屏显示));MyClickDemo.this.img.setImageResource(R.drawable.mldn_portrait);/ 显示竖屏图片super.onConfigurationChanged(newConfig);当用户使用setRequestedOrientation()方法修改了屏幕显示方向之后,会触发onConfigurationChanged()事件。权限配置:(1)在activity中:android:screenOrientation=portrait/默认显示方向为竖屏 android:configChanges=orientation|keyboard/配置configChanges事件(2)再添加:/设置允许改变屏幕信息的权限(3)如果想让屏幕自适应方向:只需在activity中用android:screenOrientation=sensor/自适应屏幕3.明文显示密码:密文显示:android.text.method.HideReturnsTransformationMethod明文显示:android.text.method.PasswordTransformationMethod在使用这两个子类时,直接利用这两个类提供的getInstance()方法即可。public class MyClickDemo extends Activity private EditText password = null;private CheckBox show = null;Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);super.setContentView(R.layout.main);this.password = (EditText) super.findViewById(R.id.password);this.show = (CheckBox) super.findViewById(R.id.show);this.show.setOnClickListener(new OnClickListenerImpl();private class OnClickListenerImpl implements OnClickListener public void onClick(View v) if (MyClickDemo.this.show.isChecked() / 被选中,应该采用明文的方式显示MyClickDemo.this.password.setTransformationMethod(HideReturnsTransformationMethod.getInstance(); / 将文本框的内容设置为明文显示 else / 采用密文的方式显示MyClickDemo.this.password.setTransformationMethod(PasswordTransformationMethod.getInstance(); / 以密文的方式显示单选按钮与OnCheckedChangeListener1.注册事件的方法为:public void setOnCheckedChangeListener(RadioGroup.OnCheckedChangeListener listener).2.public class MyRadioListenerDemo extends Activity private TextView show = null;private RadioGroup sex = null;private RadioButton male = null;private RadioButton female = null;Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);super.setContentView(R.layout.main);this.show = (TextView) super.findViewById(R.id.show);this.sex = (RadioGroup) super.findViewById(R.id.sex);this.male = (RadioButton) super.findViewById(R.id.male);this.female = (RadioButton) super.findViewById(R.id.female);this.sex.setOnCheckedChangeListener(new OnCheckedChangeListenerImpl();private class OnCheckedChangeListenerImpl implementsOnCheckedChangeListener public void onCheckedChanged(RadioGroup group, int checkedId) String temp = null; / 保存以后show组件要显示的文本信息if (MyRadioListenerDemo.this.male.getId() = checkedId) / 现在选中的ID和组件的ID一致temp = MyRadioListenerDemo.this.male.getText().toString(); / 取得信息if (MyRadioListenerDemo.this.female.getId() = checkedId) / 现在选中的ID和组件的ID一致temp = MyRadioListenerDemo.this.female.getText().toString(); / 取得信息MyRadioListenerDemo.this.show.setText(您的性别是: + temp);/ 设置文本组件的内容下拉列表框与OnItemSelectedListener1.联动菜单就是指提供两个下拉列表,当地一个下拉列表的选项发生改变时,第二个下拉列表也可以显示出与一级下拉列表相关的数据项。(1)定义城市信息的资源文件-valuescity_data.xml:中国 - 北京中国 - 上海中国 - 广州(2)配置字符串信息:-valuesstrings.xml:Hello World, MySpinnerListenerDemo!下拉列表框事件选择你喜欢的城市:选择你喜欢的城区:(3)布局文件:-main.xml(4)主程序,实现联动:public class MySpinnerListenerDemo extends Activity private Spinner city = null; / 下拉列表框内容private Spinner area = null; / 二级列表private String areaData = new String 东城, 西城, 朝阳, 大兴, 平谷 , / 针对于一级的子信息 黄浦, 杨浦, 闵行 , / 针对于二级的子信息 广州 / 针对于三级的子信息; / 子菜单项private ArrayAdapter adapterArea = null;/下拉列表内容适配器Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);super.setContentView(R.layout.main);this.city = (Spinner) super.findViewById(R.id.city); / 取得下拉列表框this.area = (Spinner) super.findViewById(R.id.area); / 取得下拉列表框this.city.setOnItemSelectedListener(new OnItemSelectedListenerImpl();private class OnItemSelectedListenerImpl implements OnItemSelectedListener public void onItemSelected(AdapterView parent, View view,int position, long id) / 表示选项改变的时候触发MySpinnerListenerDemo.this.adapterArea = new ArrayAdapter(MySpinnerListenerDemo.this,android.R.layout.simple_spinner_item,MySpinnerListenerDemo.this.areaDataposition); / 定义所有的列表项MySpinnerListenerDemo.this.area.setAdapter(MySpinnerListenerDemo.this.adapterArea);/ 设置二级下拉列表的选项内容public void onNothingSelected(AdapterView arg0) / 表示没有选项的时候触发/ 一般此方法现在不关心监听日期与时间的改变1.日期监听器接口:and

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论