第4章android组件详解_第1页
第4章android组件详解_第2页
第4章android组件详解_第3页
第4章android组件详解_第4页
第4章android组件详解_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

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

文档简介

主讲人:温春水按钮相关组件3日期/时间相关组件列表组件4进度条组件课程目录1256文本相关组件其他重要组件主要内容:掌握常用的Android图形界面组件的创建方式、特征等,包括文本组件、按钮组件、列表组件等掌握常用组件的事件处理步骤组件的常用属性以及事件处理ListView、GridView等视图容器组件的使用TextView往往用来向用户显示文本,如邮件正文或应用程序标签等。API中对应android.widget.TextView类<TextViewandroid:background="#FF00FF“android:layout_gravity="center“android:layout_height="wrap_content"android:layout_margin="60dp"android:layout_width="fill_parent“android:padding="40dp"android:text="@string/hello"android:textColor="#0000FF"/>文本的颜色和背景android:textColor=“#0000FF”android:background=“#0000FF”TextView的对齐方式android:layout_gravity=“center”字体大小android:textSize=“20px”单行显示android:singleLine=“true”android:gravity用于设置View中内容相对于View组件的对齐方式

android:layout_gravity用于设置View组件相对于Container的对齐方式LinearLayout中有android:layout_gravityRelativelayout中没有android:layout_gravityEditText是TextView类的子类,具有TextView所有属性EditText可以编辑文本EditText可以指定文本的类型,通过三种属性可以指定android:digitsandroid:inputTypeandroid:numeric<EditTextandroid:background="#FFFFFF"android:digits="

XxYy“android:layout_height="wrap_content“android:layout_margin="10dp"android:layout_width="200dp"android:textColor="#000000"/>Button类继承了TextView类在布局文件中,使用属性指定Button的属性,如android:text指定Button显示的文本<Button

android:id="@+id/button1"android:layout_height="wrap_content"android:layout_width="wrap_content"android:text="普通按钮"/>如何做出漂亮的按钮?android:background="@drawable/ic_launcher"Button经常使用OnClickListener监听点击事件使用Button类的setOnClickListener方法注册监听器Button

button1=(Button)

this.findViewById(R.id.button1);button1.setOnClickListener(new

OnClickListener(){public

void

onClick(View

arg0)

{//

TODO

Auto-generated

method

stubTextView

view=(TextView)

findViewById(R.id.text);view.setText("您点击了普通按钮");}});ImageButton是只显示图像的按钮,是ImageView的子类<ImageButtonandroid:layout_height="wrap_content"android:layout_width="wrap_content"android:src="@drawable/icon"/>如果按钮既需要显示图像又显示文字,则使用<button>配置<Button

android:drawablePadding="20dp"android:drawableRight="@drawable/icon"android:layout_height="wrap_content"android:layout_width="wrap_content"android:text="拍照"/>RadioButton可以构建一组单选按钮一组互斥的单选按钮必须在一个RadioGroup中<RadioGroup

android:layout_height="wrap_content"android:layout_width="wrap_content"><RadioButtonandroid:layout_height="wrap_content"android:layout_width="wrap_content"android:text="iPhone"/><RadioButtonandroid:layout_height="wrap_content"android:layout_width="wrap_content"android:text="Android"/><RadioButtonandroid:layout_height="wrap_content"android:layout_width="wrap_content"android:text="Phone"/></RadioGroup><RadioGroupandroid:id="@+id/gender"android:layout_width="wrap_content"android:orientation="horizontal"android:layout_height="wrap_content"

><RadioButtonandroid:id="@+id/radioButton1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:checked="true"android:text="Female"

/><RadioButtonandroid:id="@+id/radioButton2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Male"

/></RadioGroup>CheckBox多用于多选应用<CheckBox

android:id="@+id/checkbox1"android:layout_height="wrap_content"android:layout_width="fill_parent"android:text="1、我喜欢阅读"/><CheckBox

android:id="@+id/checkbox2"android:layout_height="wrap_content"android:layout_width="fill_parent"android:text="2、我喜欢旅游"/><CheckBox

android:id="@+id/checkbox3"android:layout_height="wrap_content"android:layout_width="fill_parent"android:text="3、我喜欢烘焙"/>RadioGroup

rg

=

(RadioGroup)

this.findViewById(R.id.gender);rg.getCheckedRadioButtonId();CheckBox

cb

=(CheckBox)this.findViewById(R.id.checkBox1);cb.isChecked();<View

android:layout_height="10px"android:layout_width="match_parent"android:background="#000fff”/>ToggleButton与Button的功能基本相同ToggleButton多了一个表示“开/关”状态的指示条<ToggleButton

android:id="@+id/toggleButton"android:layout_height="wrap_content"android:layout_marginLeft="30dp"android:layout_width="wrap_content"android:textOff="打开照相机"android:textOn="关闭照相机"/>res--创建drawable文件夹--创建switch_btn.xml资源文件--作以下配置<?xml

version="1.0"

encoding="utf-8"?><selectorxmlns:android="

"><item

android:state_checked="true"

android:drawable="@drawable/ios7_switch_on"

/><item

android:drawable="@drawable/ios7_switch_off"

/></selector>其中:android:state_checked="true"表示选中on时候的,效果为:android:drawable="@drawable/ios7_switch_on"反之就是未选中off情况下的效果:android:drawable="@drawable/ios7_switch_off"之后在布局文件中写控件:<ToggleButtonandroid:id="@+id/mTogBtn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:background="@android:color/transparent"android:button="@drawable/toggle_btn"android:checked="false"android:text=""android:textOff=""android:textOn=""

/>android:textOn=""

表示:选中情况下显示的文本android:textOff=""

表示:未选中情况下显示的文本android:checked="false"

表示:初始化时候,默认是未选中的android:button="@drawable/toggle_btn"

表示:button样式android:background=“@android:color/transparent”

表示:背景,这里不用它的默认背景,所以设置为透明之后在主程序中实例化,并设置checked点击监听ToggleButton

mTogBtn

=

(ToggleButton)

findViewById(R.id.mTogBtn);//获取到控件mTogBtn.setOnCheckedChangeListener(new

OnCheckedChangeListener()

{public

void

onCheckedChanged(CompoundButton

buttonView,boolean

isChecked)

{if(isChecked){//选中}else{//未选中}}});//添加监听事件参考:SwitchButtonAndroidDatePicker组件可以输入日期。范围是1900-1-1~2100-12-31TimePicker组件可以输入时间,只能输入小时和分钟,默认情况是12小时制对应的监听器分别是OnDateChangedListener和OnTimeChangedListenerAnalogClock用表盘方式显示当前时间,有时针和分针两个指针DigitalClock用数字方式显示当前时间,可以显示时、分、秒。<AnalogClock

android:layout_height="wrap_content"android:layout_width="fill_parent"/><DigitalClock

android:layout_height="wrap_content"android:layout_width="wrap_content"android:textSize="18dp"/>参考:example/DateTimeAndroidProgressBar用来显示任务或工作的完成率Android系统中可以实现圆形或者水平的进度条ProgressBar类中有setProgress和getProgress方法用来设置及获取当前进度ProgressBar类中有setSecondaryProgress和getSecondaryProgress方法用来设置及获取二级进度SeekBar是ProgressBar的子类,使用方式和

ProgressBar类似拖动条滑动的相关事件接口是OnSeekBarChangerListener,该接口中三个方法onProgressChanged:滑动滑杆onStartTrackingTouch:按住滑杆onStopTrackingTouch:松开滑杆RatingBar组件用来实现评分功能RatingBar常用的布局属性android:numStars:用于评分的五角星个数android:rating:指定当前的分数android:stepSize:指定分数的增量单位style:设置RatingBar的风格<RatingBar

android:id="@+id/ratingbar2"style="?android:attr/ratingBarStyleSmall"android:layout_height="wrap_content"android:layout_width="wrap_content"android:numStars="5"

android:rating="2"android:stepSize="0.5"/>RatingBar

rb

=(RatingBar)this.findViewById(R.id.ratingbar2);System.out.println("===========rating====="+rb.getRating());rb.setRating(3);参考:ProgressbarAndSeekBarAndRatingBarAndroidImageView用来在屏幕上显示图片使用android:src属性设置TextView的图片源。或者调用ImageView类的setImageResource(intresId)方法可以为ImageView设置显示的图片<ImageViewandroid:src="@drawable/moon"android:adjustViewBounds="true"android:layout_width="wrap_content"android:layout_height="wrap_content"

/>Spinner的功能和ListView组件类似Spinner的数据也是通过Adapter装载,使用数组或者List对象放值:String

str[]={“Data”,“英语”,“Java”,“数学"};s

=

(Spinner)

this.findViewById(R.id.spinner1);s.setAdapter(newArrayAdapter(this,android.R.layout.simple_spinner_item,str));取值:String

str

=

s.getSelectedItem().toString();TabHost是一个装载选项卡窗口的容器,实现分模块显示的效果。类似新浪微博客户端、微信客户端。继承TabActivity类在Activity中通过getTabHost()方法取得TabHost.public

class

MainActivity

extends

TabActivity

{

@Overridepublic

void

onCreate(Bundle

savedInstanceState)

{super.onCreate(savedInstanceState);//获取TabHost组件TabHost

tabHost

=

getTabHost();//新建一个标签页TabSpec

tabSpec1

=

(TabSpec)tabHost.newTabSpec("Home").setIndicator("Home“);//给标签页设置内容tabSpec1.setContent(new

Intent(MainActivity.this,HomeActivity.class));//把标签页添加到TabHost当中去

tabHost.addTab(tabSpec1);TabSpec

tabSpec2

=(TabSpec)tabHost.newTabSpec("COMMENT").setIndicator("COMMENT");tabSpec2.setContent(new

Intent(MainActivity.this,CommentActivity.class));tabHost.addTab(tabSpec2);}}Android中的五种对话框AlertDialogCharacterPickerDialogDatePickerDialogTimePickerDialogProgressDialogAlertDialog类继承了Dialog类是其他对话框类的父类AlertDialog类有一个重要的内嵌类-BuilderAlertDialog类的常用方法Dialogdialog

=

new

AlertDialog.Builder(MainActivity.this).setTitle("Title").setMessage("Message").setPositiveButton(("确定"),new

DialogInterface.OnClickListener(){@Overridepublic

void

onClick(DialogInterface

dialog,int

which)

{System.out.println("====");}}).setNegativeButton(("取消"),new

DialogInterface.OnClickListener(){@Overridepublic

void

onClick(DialogInterface

dialog,int

which)

{//...}}).create();dialog.show();使用AlertDialog可以创建出各种对话框如果要完全定制自己的对话框,可以自定义对话框AlertDialog.Builder类的setView方法new

AlertDialog.Builder(this).setView(布局文件).show()AlertDialog.Builder

builder

=

new

AlertDialog.Builder(MainDialog.this);LayoutInflater

factory

=

LayoutInflater.from(this);final

View

textEntryView

=

factory.inflate(R.layout.test,

null);builder.setIcon(R.drawable.icon);builder.setTitle("自定义输入框");builder.setView(textEntryView);LayoutInflater:

在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于

findViewById()。不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例化;而findViewById()是找xml布局文件下的具体widget控件(如Button、TextView等)。builder.setPositiveButton("确定",new

DialogInterface.OnClickListener(){

public

void

onClick(DialogInterface

dialog,

int

whichButton){EditText

userName

=

(EditText)textEntryView.findViewById(R.id.etUserName);EditTextpassword=(EditText)textEntryView.findViewById(R.id.etPassWord);}});builder.setNegativeButton("取消",new

DialogInterface.OnClickListener(){

public

void

onClick(DialogInterface

dialog,

int

whichButton){}});builder.create().show();取消按钮setNegativeButton

(CharSequence

text,

DialogInterface.OnClickListener

listener)setNegativeButton

(int

textId,

DialogInterface.OnClickListener

listener)确认按钮setPositiveButton

(CharSequence

text,

DialogInterface.OnClickListener

listener)setPositiveButton

(int

textId,

DialogInterface.OnClickListener

listener)覆盖按钮setNeutralButton

(int

textId,

DialogInterface.OnClickListener

listener)setNeutralButton

(CharSequence

text,

DialogInterface.OnClickListenerlistener)选项菜单通过硬件调用的菜单情景菜单通过上下文调用的菜单MenuubMenuSContextMenuMenuItemActivity类的onCreateOptionsMenu方法用来创建选项菜单通过硬件调用的菜单通过手机上的菜单键进行调用public

class

MenuActivity

extends

Activity

{@Overridepublic

boolean

onCreateOptionsMenu(Menu

menu)

{MenuItem

mItem1=menu.add(1,1,1,"设置");

MenuItem

mItem2=menu.add(1,2,2,"资料");

MenuItem

mItem3=menu.add(1,2,3,"信息");

return

true;}getMenuInflater().inflate(R.menu.main,

menu);<menu

xmlns:android=""

><item android:id="@+id/menu_settings" android:orderInCategory="1" android:title="设置"/><itemandroid:id="@+id/menu_about"android:orderInCategory="2"android:title="关于"/><itemandroid:id="@+id/menu_quit"android:orderInCategory="3"android:title="退出"/></menu>menu.add方法的参数:

第一个int类型的group

ID参数,代表的是组概念,你可以将几个菜单项归为一组,以便更好的以组的方式管理你的菜单按钮。

第二个int类型的item

ID参数,代表的是项目编号。这个参数非常重要,一个item

ID对应一个menu中的选项。在后面使用菜单的时候,就靠这个

item

ID来判断你使用的是哪个选项。

第三个int类型的order

ID参数,代表的是菜单项的显示顺序。默认是0,表示菜单的显示顺序就是按照add的显示顺序来显示。第四个String类型的title参数,表示选项中显示的文字。public

boolean

onOptionsItemSelected(MenuItem

item){System.out.println("onOptionsItemSelected------>"+item.getOrder());return

true;}Android

的上下文菜单类似于PC

上的右键菜单。当为一个视图注册了上下文菜单之后,长按(2

秒左右)这个视图对象就会弹出一个浮动菜单,即上下文菜单。如TextView注意:Android

的上下文菜单不支持图标或快捷键。1.

覆盖Activity

的onCreateContenxtMenu()方法,调用Menu

的add

方法添加菜单项(MenuItem)。2.

覆盖Activity

的onContextItemSelected()方法,响应上下文菜单菜单项的单击事件。3.setOnCreateContextMenuListener(this);为视图注册上下文菜单。注册上下文菜单:TextView

tv

=

(TextView)this.findViewById(R.id.tv1);tv.setOnCreateContextMenuListener(this);设置菜单:public

void

onCreateContextMenu(ContextMenu

menu,

View

v,ContextMenuInfo

menuInfo){super.onCreateContextMenu(menu,

v,

menuInfo);menu.setHeaderTitle("Hello");menu.add(0,

3,

6,

"Delete");menu.add(0,

4,

1,

"Copy");}结果测试:public

boolean

onContextItemSelected(MenuItem

item)

{System.out.println("=========="+item.getItemId());System.out.println("==========="+item.getOrder());return

super.onContextItemSelected(item);}ListView用于以垂直列表方式显示数据项ListView相关的三个主要接口和类ListViewListActivityListAdapter声明ListView布局文件声明列表项的布局文件继承Activity或ListActivity,覆盖onCreate方法创建Adapter对象将Adapter对象设置给ListView进行显示<ListView

android:id="@+id/booklist"android:layout_height="wrap_content"android:layout_width="fill_parent"/>实现列表显示。ListView通常有两个职责。(1)将数据填充到布局。(2)处理用户的选择点击等操作。ListView的创建需要3个元素。(1)ListView中的每一列的View。(2)填入View的数据。(3)连接数据与ListView的适配器。适配器是一个连接数据和ListView的桥梁,通过它能有效地实现据与ListView的分离设置,使ListView与数据的绑定更加简便,修改更加方便ArrayAdapter

aa

=

new

ArrayAdapter(this,android.R.layout.simple_list_item_1,list);lv.setAdapter(aa);lv.setOnItemClickListener(new

OnItemClickListener(){public

void

onItemClick(AdapterView<?>

arg0,

View

arg1,

int

arg2,long

arg3)

{System.out.println("============"+list.get(arg2));}});MyListViewAdapter

mlva

=

new

MyListViewAdapter(this,listStudent);lv.setAdapter(mlva);public

MyListViewAdapter(Context

context,

List<Student>

data)

{this.context

=

context;this.stuList

=

data;this.layoutInflater

=

LayoutInflater.from(context);}public

View

getView(int

position,

View

convertView,

ViewGroup

parent)

{convertView

=

layoutInflater.inflate(R.layout.listitem,

null);vh.image

=

(ImageView)

convertView.findViewById(R.id.tv_desc);vh.title

=

(TextView)

convertView.findViewById(R.id.tv_title);return

convertView;}public

View

getView(int

position,

View

convertView,ViewGroup

parent)

{convertView

=

layoutInflater.inflate(R.layout.listitem,

null);vh.title

=(TextView)

convertView.findViewById(R.id.tv_title);vh.title.setText(((Student)

stuList.get(position)).getStuTitle());return

convertView;}MyListViewAdatperGridView是以网格的形式排列所包含的内容,每个单元格的内容可以是任意一个View组件与ListView相同,GridView通过Adapter封装后台的数据,必须调用setAdapter()方法将GridView和数据绑定GridView可以使用OnItemClickListener及OnItemSelectedListener监听事件//准备要添加的数据条目List<Map<String,

Object>>

温馨提示

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

评论

0/150

提交评论