当前位置: 网学 > 编程文档 > Android > 正文

Android_UI设计

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: myeducs.cn 发布时间: 13/03/17

【网学网提醒】:网学会员为大家收集整理了Android_UI设计提供大家参考,希望对大家有所帮助!


    视图组件android.view.Viewandroid.view.View父类
    android:background背景颜色android:layout_heightlayout_width=fill_parent|wrap_content可以设为>0,这样组件会优先显示.>0,这样组件会优先显示android:layout_weight权重默认为0可以设为>0,这样组件会优先显示.容器会按权重比例分配组件空间,的组件能显示就显示,容器会按权重比例分配组件空间,为0的组件能显示就显示,不能显示就忽略android:layout_gravity内部布局方式android:id唯一标识程序中引用:程序中引用:引用addView():添加组件getChildAt()获得某个组件“@+id/XXX”@+id/XXX”其他组件引用:@id/XXX”其他组件引用:“@id/XXX”findViewById(R.id.XXX)来自Activity类View的子类View的容器android.view.ViewGroup
    布局管理器:布局管理器:
    ViewGroup的子类
    朝向horizontal或vertical不改变组件大小
    LinearLayout水平或垂直布局android:orientationandroid:gravity内部元素的布局方式取值:取值:top|bottom|left|right|centerfill|fill_vertical|fill_horizontal拉伸组件View,也可以是TableLayout表格布局子标签可以是某个View,也可以是TableRow指定组件放在第几列开始)android:layout_column指定组件放在第几列(下标从0开始)android:collapseColumns:指定哪列为隐藏的android:collapseColumns:指定哪列为隐藏的android:shrinkColumns:指定哪列可以收缩android:shrinkColumns:指定哪列可以收缩其他列内容多时会自动收缩android:stretchColumns:指定哪列可以拉伸android:stretchColumns:指定哪列可以拉伸其他列内容少时会自动拉伸设定多列,设定多列,列号用逗号隔开RelativeLayout相对位置布局取值为booleanandroid:layout_centerHorizontal位于父组件横向中间android:layout_centerVerticalandroid:layout_centerInParentandroid:layout_alignParentLeftandroid:layout_alignParentRightandroid:layout_alignParentTop位于父组件纵向中间位于父组件中央左端与父组件左端对齐右端与父组件右端对齐顶端与父组件顶端对齐
    android:layout_alignParentBottom底端与父组件底端对齐
    android:layout_alignWithParentIfMissing参照组件不存在时参照父组件取值为其他控件idandroid:layout_toRightOf本控件位于给出id控件的右侧
     android:layout_toLeftOf本控件位于给出id控件的左侧android:layout_aboveandroid:layout_belowandroid:layout_alignTopandroid:layout_alignBottomandroid:layout_alignLeftandroid:layout_alignRight取值为像素的属性android:layout_marginLeftandroid:layout_Top左侧留白上方留白android:layout_marginRight右侧留白android:layout_marginBottom下方留白FrameLayout帧布局所有控件都堆在左上角后放置的显示在上层android:foreground设置绘制在所有子控件上的内容android:foregroundGravity设置所有子控件的gravityView.GONE)设置
    可见或不通过对组件调用setVisibility(View.VISIBLE|View.GONE)设置可见或不可见容器不负责控件的位置,AbsoluteLayout绝对布局容器不负责控件的位置,位置由坐标指定单位:dip每个组件要声明android:layout_x和android:layout_y单位:dip本控件位于给出id控件的上方本控件位于给出id控件的下方本控件上边界与给出本控件上边界与给出id控件上边界对齐本控件下边界与给出id控件下边界对齐本控件左边界与给出id控件左边界对齐本控件右边界与给出id控件右边界对齐
    基本控件
    TextView文本视图不可编辑android:autoLink将指定格式的文本显示为链接取值:none|web|email|phone|map|all取值:none|web|email|phone|map|allandroid:gravity:在android:gravity:在x轴和y轴的显示方向android:heightandroid:width高度和宽度以像素为单位当内容为空时显示的文本android:hint当内容为空时显示的文本android:text文本内容android:textColor文本颜色android:textSize字体大小android:typeface文本字体android:ellipsize显示内容超出长度时如何省略取值none|start|middle|end|marqueeEditTextTextView的子类可以编辑android:lines:固定的行数
     android:maxLinesandroid:minLines最大和最小行数android:password是否显示为密码android:phoneNumber内容只能是电话号码android:scrollHorizontally是否可以水平滚动android:selectAllOnFocus当获得焦点时自动选中全部内容android:singleLine单行模式android:maxLength最大宽度阴影颜色,android:shadowColor|shadowDx|shadowDy|shadowRadius阴影颜色,偏移和半径ButtonButtonTextView的子类按钮可以添加onClickListener可以设置背景图片setBackgroundDrawableImageButtonImageView的子类图片按钮没有android:text属性android:src:设置按钮上的图片技巧不同的按钮状态显示不同的图片res/drawable在res/drawable-mdpi中定义myselector.xmlandroid:state_pressed=”false”android:state_pressed=”true”的定义中,android:src=”@drawable/myselector”在ImageButton的定义中,设置android:src=”@drawable/myselector”ToggleButtonButton的子类状态开关按钮android:textOffandroid:textOff按钮未被选中时显示的文本android:textOn按钮被选中时显示的文本(来自可以注册OnCheckedChangeListener(来自android.widget.CompoundButton)CheckBoxRadioButtonButton的子类多选按钮单选按钮android:checked初始时是否选中的子类)RadioButton在声明中要放入RadioGroup(LinearLayout的子类)注册监听:可以注册在RadioGroup
    上,OnCheckedChangeListener,来自RadioGroup类,可以获得一组中被选中按钮的id也可以在RadioButton上注册OnCheckedChangeListener(来自android.widget.CompoundButton)ImageViewView的直接子类android:src要显示的图片android:maxHeightmaxWidth最大宽度高度android:scaleType控制图片如何调整,控制图片如何调整,移动来适应ImageViewandroid:adjustViewBounds是否需要ImageView调整自身来适应图片长宽
     比方法:方法:setAlpha(intalpha)设置透明度setImageResource(intresid)设置图片setImageURI(Uriuri)设置图片为指定的URIsetImageBitmap(Bitmapbm)设置图片为指定的Bitmap对象setImageDrawable(Drawabled)设置图片为指定的DrawableAnalogClockDigitalClock时钟控件直接声明就能用DatePicker日期选择器android:startYearendYear起始年份终止年份方法:方法:getDayOfMonth()获取日期天数getMonth()getYear()获取日期月份获取日期年份DigitaClock继承TextView类
    setEnabled(booleanenabled)控制控件是否可用updateDate(intyear,intmonth,intday)更新控件的属性值init(intyear,intmonth,intday,DatePicker.OnDateChangedListenerl)初始化属性,初始化属性,设置监听器TimePicker时间选择器方法:方法:getCurrentHour()is24HourView()获得当前小时是否是24小时制设置小时getCurrentMinute()获得当前分钟setIs24HourView(booleanb)设置24小时制setCurrentHour(inth)setCurrentMinute(intm)设置分钟setOnTimeChangedListener(TimePicker.OnTimeChangedListenerl)监听
    高级控件
    AutoCompleteTextView自动完成文本框EditText的子类android:completionThreshold需要用户输入的字符数下拉列表的宽度,高度android:dropDownHeightdropDownWidthandroid:popupBackground下拉列表的背景使用方法:1.将字符串放入String静态常量数组str中2.创建ArrayAdapter对象,构造参数为3个,分别是this,android.R.layout.simple_dropdown_item_1line,str3.myAutonCompleteTextView.setAdapter(刚刚创建的ArrayAdapter)
     ScrollView滚动视图
    一个ScrollView中只能放一个View
    ListView列表视图将ListAdapter提供的各个控件显示在垂直可滚动的列表中android:choiceMode选择模式singleChoice|multipleChoice使用方法:1.继承BaseAdapter类,覆盖getView方法,返回一个水平排列的LinearLayout覆盖getCount方法,返回列表选项个数2.对ListView对象调用setAdapter方法,设置适配器3.对ListView设置OnItemSelectedListener(用上下键进行选择)4.对ListView设置OnItemClickListener(用触摸屏进行选择)这两个监听器接口来自android.widget.AdapterView类也可以直接使用ArrayAdapter或SimpleAdapter如果一个Activity只含有一个ListView,可以直接继承ListActivity那个ListView的id必须为@android:id/list调用getListView()方法获得
    组件在ListActivity的子类中,覆盖onListItemClick(ListViewl,Viewv,intposition,longid)其中v是被点击的组件,position是索引,可以将Cursor移动到position位置上,来获取数据,id是对应数据项的id在上下文菜单的响应方法:onContextItemSelected(MenuItemmi)中,mi.getMenuInfo()返回对象直接强转为:AdapterContextMenuInfo类型(AdapterView的内部类),这样用info.id可以直接获得数据项的id
    GridView网格视图android:columnWidthandroid:gravityandroid:numColumns列宽列数对齐方式
    android:horizontalSpacingverticalSpacing单元格之间水平,垂直距离使用方法:1.在layout目录下再建一个文件如grid_row.xml定义每行的组件.根标记为LinearLayout2.定义generateData方法,返回值为List>.该List中放若干Map,每个Map记录一行数据.列名为key,列值为value.对于图片的列值,存放的是R.drawable.XXX,对于字符串的列值,存放的是String数值.3.在onCreate方法中创建一个SimpleAdapter.需要5个构造参数,分别是:thisgenerateData()代表要放入GridView的数据ListR.layout.grid_rowString[]列名数组引用layout目录中定义的xml文件
     int[]列对应的控件id列表,这些id在grid_row.xml中定义4.设置GridView的适配器为刚刚创建的SimpleAdapter5.添加OnItemClickListener和OnItemSelectedListener(同ListView)ProgressBar进度条android:maxandroid:progressstyle="@android:style/Widget.ProgressBar""@android:style/Widget.ProgressBar.Horizontal"android:secondaryProgress在进度条中的一个进度标记方法:setProgress()SeekBar拖拉条ProgressBar的子类方法getProgress()可以添加SeekBar.OnSeekBarChangeListener监听RatingBar星级滑块TabHost选项卡创建方法一:在main.xml中定义FrameLayout为根节点,其中放入若干LinearLayoutJava代码中继承TabActivity,不使用setContentView,而用:LayoutInflaterinflater=LayoutInflater.from(this);inflater.inflate(R.layout.main,getTabHost().getTabContentView(),true);创建方法二:在main.xml中定义TabHost为根节点,放入LinearLayout(垂直),其中放入TabWidget(宽度fill_parent)和FrameLayout.FrameLayout中放入若干LinearLayout注意:TabHostid=@android:id/tabhostTabWidgetid=@android:id/tabsFrameLayoutid=@android:id/tabcontentJava代码继承TabActivity,通过getTabHost()拿到TabHost对象使用方法:1.对TabHost对象调用newTabSpec(“x1”)方法创建一个TabHost.TabSpec对象2.对Spec对象调用setIndicator()方法,设置标签头,两个参数为选项卡名,和选项卡图标(getResources().getDrawable())3.对spec对象调用setContent方法设置内容,参数为该选项卡对应的LinearLayout的id.4.对TabHost对象调用addTab()方法,添加spec对象5.可以对TabHost对象设置OnTabChangeListenerGallery画廊android:ani
    mationDuration动画过渡时间或者是
     android:gravity对齐方式android:unselectedAlpha未选中图片的透明度android:spacing图片间空白大小使用方法:很类似于ListView1.继承BaseAdapter类,覆盖getView方法,返回一个ImageView覆盖getCount方法,返回图片个数2.对Gallery对象调用setAdapter方法,设置适配器3.对Gallery可以设置OnItemSelectedListenerImageSwitcher图片切换显示一张图片,setImageResource方法setInAnimation,setOutAnimation设置图片跳进跳出的动画效果参数:android.view.animation.AnimationUtils.loadAnimation(this,android.id.R.anim.fade_in)在调用setImageResource之前必须先调用setFactory,在ViewFactory接口的实现类中实现makeView方法,在该方法中将一个ImageView先准备好Spinner下拉列表使用方法:类似于ListView1.继承BaseAdapter类,覆盖getView方法,返回一个水平排列的LinearLayout覆盖getCount方法,返回列表选项个数2.对Spinner对象调用setAdapter方法,设置适配器3.对Spinner设置OnItemSelectedListener监听器接口来自android.widget.AdapterView类设置Adapter的另一个办法:直接使用ArrayAdapter:newArrayAdapter(this,android.R.layout.simple_spinner_item,list);list中含有所有的选项条目(String).第二个参数为android内置样式的TextViewadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);//设置下拉箭头样式也可以调用:ArrayAdapter.createFromResource(this,R.array.msa,android.R.layout.simple_spinner_item).R.array.msa是定义在res/values/array.xml中的字符串数组菜单与对话框选项菜单按Menu键可以弹出最多6个选项Activity中的相关方法:onCreateOptionsMenu(Menu)初始化选项菜单第一次显示菜单该方法必须返回true,返回false则不显示菜单onPrepareOptionsMenu(Menu)每次显示菜单时调用onOptionsItemSelected(MenuItem)选中某个菜单项onOptionsMenuClosed(Menu)关闭选项菜单
     Menu方法(android.view)MenuItemadd(intgroupId,int
    itemId,int
    order,String
    title)
    title也可以是String资源的id添加菜单项SubMenuaddSubMenu(intgrouId,intitemId,intorder,Stringtitle)添加子菜单MenuItem方法(android.view)setAlphabeticShortcutsetNumbericShortcut添加快捷键setIcon(Drawabled)设置图标setIntent(Intentt)绑定Intent对象,选中时触发其他Activity,这个逻辑定义在父类的onOptionsItemSelected方法中,如果覆盖了该方法,则必须调用super.onOptionsItemSelectedsetOnMenuItemClickListener(MenuItem.OnMenuItemClickListener)监听SubMenu方法(android.view)Menu的子类无法向子菜单添加子菜单setHeaderIcon(Drawable或intid)设置标题图标setHeaderTitle(String或intid)设置标题文字setIcon(Drawable或intid)设置图标注意:当某个MenuItem被选中时,其checked属性不会自动改变,需要用
    程序控制对于所有MenuItem都需要的监听,可以直接覆盖onOptionsItemSelected方法.这样所有MenuItem都会响应,包括SubMenu每个菜单(包括MenuItem和SubMenu)都有一个id,每个菜单也有个Group_Id,定义其属于哪个组,Menu中定义了一些与Group有关的方法,如removeGroup,setGroupCheckable,setGroupVisible,setGroupEnabled等,组id和菜单的id两回事通过布局文件来实现选项菜单:在res目录中建立menu子目录,在其中创建menu1.xml.根标记为menu,子标记为item,为item定义属性id,title,orderInCategory,checked,icon,enabled,visible.menu的子标记还可以是group,同样为其指定id,checkableBehavioritem标记中可以嵌套menu子标记,模拟实现子菜单在onCreateOptionsMenu(Menum)方法中:MenuInflaterinf=getMenuInflater();inf.inflate(R.menu.menu1,m);returntrue;上下文菜单ContextMenuMenu的子类(子接口)注册到某个View,长时点击可以触发Activity中的相关方法:onCreateContextMenu(ContextMenucontextMenu,Viewview,ContextMenu.ContextMenuInfomenuInfo)menuInfo指的是额外信息onContextItemSelected(MenuItemitem)选中上下文菜单选项onContextMenuClosed(Menumenu)被关闭时调用registerForContextMenu(Viewv)为指定的View注册上下文菜单,这样,
     长点这个组件的时候,才会触发onCreateContextMenu方法每个组件都可以注册上下文菜单,每个菜单项的id应该不同,否则利用onContextItemSelected方法的时候,无法区分是哪个菜单项被选中了.因为方法的参数是MenuItem,不区分哪个View对话框(相关类在android.app包)Activity中的相关方法onCreateDialog(intid):为Dialog指定idonPrepareDialog(intid,Dialogdialog):重绘Dialog,在每次显示Dialog之前都会调用showDialog(intid):Dialog的id显示DialogdismissDialog(intid):隐藏DialogremoveDialog(intid):删除Dialog使用方法:覆盖Activity中的onCreateDialog方法,可以针对不同的id返回不同的Dialog.在需要显示Dialog的地方,用showDialog(id)就可以.也可以不用onCreateDialog方法,直接创建Dialog对象,调用show方法显示!创建Dialog方法如下:普通对话框创建AlertDialog.Builder,对Builder对象调用setMessage方法设置信息,调用setPositiveButton方法设置确认按钮,调用create方法生成Dialog.确认按钮的事件响应为OnClickListener,作为setPositiveButton的参数.列表对话框创建AlertDialog.Builder,对Builder对象调用setItems方法设置多个条目,并指定OnClickListener监听,调用create方法生成Dialog.单选对话框创建AlertDialog.Builder,对Builder对象调用setSingleChoiceItems方法设置多个选项,可以指定OnClickListener监听,但必须通过setPositiveButton设置确认按钮,否则对话框无法dismiss.多选对话框创建AlertDi
    alog.Builder,对Builder对象调用setMultiChoiceItems方法设置多个选项,可以指定OnMultiChoiceClickListener监听,最后通过setPositiveButton设置确认按钮,否则对话框无法dismiss.日期选择对话框直接创建DatePickerDialog,构造参数为this,DatePickerDialog.OnDateSetListener,初始年月日时间选择对话框直接创建TimePickerDialog,构造参数为this,TimePickerDialog.OnTimeSetListener,初始小时,分钟,是否24小时制进度对话框直接创建ProgressDialog,有两种样式可以选择.往往需要单起一个线程来实时改变进度条的progress属性.当progress达到max值时,要主动调
     用dismiss方法屏蔽进度条.覆盖Activity的onPrepareDialog方法,再次显示对话框时把progress属性清零.也可以直接调用ProgressDialog.show方法,获得一个ProgressDialog对象注意:前四种对话框的监听器接口均定义在android.content.DialogInterface接口中.自定义对话框
    1)在res/layout目录中定义xml文件如:dialog.xml,定义Dialog布局2)在代码中创建一个AlertDialog.Builderbuilder3)LayoutInflaterinf=LayoutInflater.from(Activity1.class);4)Viewdv=inf.inflate(R.layout.dialog,null);//null表示没有父组件5)builder.setView(dv);6)builder.create().show();
    Toast即时消息来自android.widget包,从不获得焦点创建Toast:Toast.makeText(this,msg,Toast.LENGTH_SHORT或LENGTH_LONG);显示Toast:Toast对象.show()技巧:显示带图片的Toast调用Toast的getView方法获得Viewtv,然后将tv连同一个ImageView放入一个LinearLayout对象lv(水平排列)中,最后调用Toast的setView方法将lv设置为Toast的view.调用show方法显示出来.Notification在状态栏中显示点击图标会跳转到另一个Activity来自android.app包使用方法:1.创建Intent,指定跳转的Activity2.创建PendingIntent:PendingIntent.getActivity()参数为context,0,intent,03.创建Notification,指定图标,提示文字和通知方式,通知方式为Notification类中定义的三个常量之一:声音,震动还是二者都有(震动需要定义权限)4.对Notificaiton调用setLatestEventInfo,建立Notification和PendingIntent的关联.四个参数:Context,title,msg,PendingIntent5.获得NotificationManager:getSystemService(NOTIFICATION_SERVICE);6.对NotificationManager对象调用notify方法,激活notification.两个参数:自己指定notification的id,刚刚创建的Notification对象
    事件监听
    boolean返回值true表示事件处理完了false表示没处理完由其他回调函数处理这样可以控制父组件是否需要响应事件
     Activity中的方法|_onKeyDown(intkeyCode,KeyEventevent)按下键盘|_onKeyUp(intkeyCode,KeyEventevent)抬起键盘|_onTouchEvent(MotionEventevent)触摸事件Event.getAction()==MotionEvent.ACTION_DOWN屏幕按
    下Event.getAction()==MotionEvent.ACTION_UP屏幕抬起Event.getAction()==MotionEvent.ACTION_MOVE屏幕拖动|_onFocusChanged(booleangainFocus,intdirection,RectpreFocus)焦点改变gainFocus:触发事件的view是否获得了焦点direction:焦点移动的方向preFocus:前一个获得焦点的矩形区域监听接口android.view.View.若干内部接口OnClickListeneronClick(Viewv):点击事件v为事件源OnLongClickListeneronLongClick(Viewv):长时点击OnFocusChangeListeneronFocusChange(Viewv,BooleanhasFocus)OnKeyListeneronKey(Viewv,intkeyCode,KeyEventevent)OnTouchListeneronTouch(Viewv,MotionEventevent)OnCreateContextMenuListeneronCreateContextMenu(ContextMenumenu,Viewv,ContextMenuInfoinfo)处理上下文菜单显示事件android.os.Handler类让程序中的线程和ActivityHandler消息传递机制交互1.在Activity的Widget中开发Handler类的对象,覆盖handleMessage方法2.在新启动的线程中调用sendEmptyMessage或sendMessage方法向Handler发送消息3.Handler对象利用handleMessage方法接收消息界面技巧:requestWindowFeature(Window.XXX)特殊的窗口特性如:顶部放个进度条:Window.FEATURE_PROGRESSFEATURE_NO_TITLE等屏幕方向:可以在AndroidMenifest.xml中定义,也可以编程定义在activity标签中android:screenOrientation=“landscape|portrait|sensor”在Activity类中getRequestedOrientationsetRequestedOrientation参数:ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE获得屏幕属性:DisplayMetricsdm=newDisplayMetrics();getWindowManager().getDufaultDisplay().getMetrics(dm);dm.widthPixelsdm.heightPixels
    
    
  • 下一篇资讯: Android_UI
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号