Android UI开发基础

Android UI开发基础 52html

3.1 Android UI框架 52android

3.1.1 ViewViewGroup 52git

请分析ViewViewGroup的关系。框架

答案:ViewViewGroup的父类。AndroidUI开发使用层次模型来完成,通常都是在一个ViewGroup中嵌套多层ViewGroup,每一层中含有随意数目的View。咱们能够将整个屏幕看作一个ViewGroup,它同时也是一个View,而在这个总体的ViewGroup之中,又有多个ViewGroupView,每一个ViewGroup中又能够有多个子ViewGroupView布局

3.1.2 Android UI开发分类 53this

3.2 经常使用的基本控件(一) 55spa

3.2.1 TextView 58.net

请说明TextView继承自谁和它是用来干什么的。xml

答案:它直接继承自View,用来向用户显示文本并容许用户编辑它。htm

请写出TextView的很多于四个子孙类。

答案:EditTextButtonDigitalClockTextClockCheckedTextViewChronometerCheckBoxRadioButtonSwitch等。

3.2.2 EditText 62

EditText是什么,及其用处。

答案:EditText继承自TextView,专门用来获取用户输入的文本信息。因为它是继承自TextView的,因此能够说EditText就是一个可编辑的TextView

3.2.3 Button 63

Button继承自什么类,及其做用。

答案: Button一样继承自TextView,它自己还有几个子孙类,包括CheckBoxRadioButtonSwitchToggleButton等。按钮在UI开发中用的不少,经常使用来响应用户的点击。

3.3 Android UI布局 64

3.3.1 LinearLayout——线性布局 65

3.3.2 RelativeLayout——相对布局 67

3.3.3 TableLayout——表格布局 68

3.3.4 FrameLayout——帧布局 70

3.3.5 AbsoluteLayout——绝对布局 71

请写出Android中的五大布局。

答案:LinearLayout线性布局、RelativeLayout相对布局、TableLayout表格布局、FrameLayout帧布局和AbsoluteLayout绝对布局。

请介绍下Android中经常使用的五种布局

答案:Android布局是应用界面开发的重要一环,在Android中,共有五种布局方式,分别是:FrameLayout(框架布局),LinearLayout (线性布局),

AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout(表格布局)。 

  1.FrameLayout    

    这个布局能够当作是墙脚堆东西,有一个四方的矩形的左上角墙脚,咱们放了第一个东西,要再放一个,那就在放在原来放的位置的上面,这样依次的放,会盖住原来的东西。这个布局比较简单,也只能放一点比较简单的东西。    

2.LinearLayout    

线性布局,这个东西,从外框上能够理解为一个div,他首先是一个一个从上往下罗列在屏幕上。每个LinearLayout里面又可分为垂直布局 android:orientation="vertical")和水平布局(android:orientation="horizontal" )。当垂直布局时,每一行就只有一个元素,多个元素依次垂直往下;水平布局时,只有一行,每个元素依次向右排列。    

linearLayout中有一个重要的属性 android:layout_weight="1",这个weight在垂直布局时,表明行距;水平的时候表明列宽;weight值越大就越大。    

3.AbsoluteLayout    

    绝对布局犹如div指定了absolute属性,用X,Y坐标来指定元素的位置android:layout_x="20px" android:layout_y="12px" 这种布局方式也比较简单,可是在垂直随便切换时,每每会出问题,并且多个元素的时候,计算比较麻烦。    

4.RelativeLayout    

    相对布局能够理解为某一个元素为参照物,来定位的布局方式。主要属性有:    

    相对于某一个元素    

    android:layout_below="@id/aaa" 该元素在 idaaa的下面    

    android:layout_toLeftOf="@id/bbb" 改元素的左边是bbb    

     相对于父元素的地方    

     android:layout_alignParentLeft="true"  在父元素左对齐    

     android:layout_alignParentRight="true" 在父元素右对齐    

     还能够指定边距等,具体详见API    

            

5.TableLayout    

     表格布局相似Html里面的Table。每个TableLayout里面有表格行TableRowTableRow里面能够具体定义每个元素,设定他的对齐方式 android:gravity=""     

     每个布局都有本身适合的方式,另外,这五个布局元素能够相互嵌套应用,作出美观的界面。

3.4 经常使用的基本控件(二) 71

3.4.1 ImageViewImageButton 72

请写出ImageButtonImageView的关系和区别。

答案:ImageButton继承自ImageView ImageButton用在须要接收用户点击的图片显示中,而ImageView则通常用来直接显示图片。

3.4.2 CheckBoxRadioButtonToggleButton 75

CheckBoxRadioButtonToggleButton的父类是谁,及它们都是什么?

答案:这三者所有是Button的子类,都是与处理用户点击事件有关的控件。其中,CheckBox是选择框,RadioButton是单选按钮,而ToggleButton是双状态选择按钮。

Android经常使用控件的信息。

答案:单选框(RadioButtonRadioGroup)

RadioGroup用于对单选框进行分组,相同组内的单选框只有一个单选框被选中。

事件:setOnCheckedChangeListener(),处理单选框被选择事件。把RadioGroup.OnCheckedChangeListener实例做为参数传入。

多选框(CheckBox):

每一个多选框都是独立的,能够经过迭代全部的多选框,而后根据其状态是否被选中在获取其值。

事件:setOnCheckChangeListener()处理多选框被选择事件。把CompoundButton.OnCheckedChangeListener实例做为参数传入

下拉列表框(Spring)

Spinner.getItemAtPosition(Spinner.getSelectedItemPosition());获取下拉列表框的值。

事件:setOnItemSelectedListener(),处理下拉列表框被选择事件把AdapterView.OnItemSelectedListener实例做为参数传入;

拖动条(SeekBar)

SeekBar.getProgress()获取拖动条当前值

事件:setOnSeekBarChangeListener(),处理拖动条值变化事件,把SeekBar.OnSeekBarChangeListener实例做为参数传入。

菜单(Menu):

重写ActivityonCreatOptionMenu(Menu menu)方法,该方法用于建立选项菜单,咋用户按下手机的"Menu"按钮时就会显示建立好的菜单,在onCreatOptionMenu(Menu Menu)方法内部能够调用Menu.add()方法实现菜单的添加。

重写ActivityonMenuItemSelected()方法,该方法用于处理菜单被选择事件。

进度对话框(ProgressDialog)

建立并显示一个进度对话框:ProgressDialog.show(ProgressDialogActivity.this,"请稍等""数据正在加载中...."true)

设置对话框的风格:setProgressStyle()

ProgressDialog.STYLE_SPINNER  旋转进度条风格(为默认风格)

ProgressDialog.STYLE_HORIZONTAL 横向进度条风格

android:gravityandroid:layout_gravity的区别

答案:LinearLayout有两个很是类似的属性:android:gravityandroid:layout_gravity。他们的区别在 于:android:gravity用于设置View组件的对齐方式,而android:layout_gravity用于设置Container组件的 对齐方式。

举个例子,咱们能够经过设置android:gravity="center"来让EditText中的文字在EditText组件中居中显示;同 时咱们设置EditTextandroid:layout_gravity="right"来让EditText组件在LinearLayout中居中 显示。来实践如下:

正如咱们所看到的,在EditText中,其中的文字已经居中显示了,而EditText组件本身也对齐到了LinearLayout的右侧。

[html] view plaincopyprint?

<LinearLayout   

    xmlns:android="http://schemas.android.com/apk/res/android"   

    android:orientation="vertical"   

    android:layout_width="fill_parent"   

    android:layout_height="fill_parent">   

    <EditText   

        android:layout_width="wrap_content"   

        android:gravity="center"   

        android:layout_height="wrap_content"   

        android:text="one"   

        android:layout_gravity="right"/>   

</LinearLayout>  


这两个属性也能够用于 Framlayout Textview 
等等,表示的意思大同小异。

paddingmargin的区别。

答案:padding填充的意思,指的是view中的contentview边缘的距离,相似文本中的indent
margin
表示的是view的左边缘与parent view的左边缘的距离
margin
通常用来描述控件间位置关系,而padding通常描述控件内容和控件的位置关系。

简单,padding是站在父 view的角度描述问题,它规定它里面的内容必须与这个父view边界的距离。margin则是站在本身的角度描述问题,规定本身和其余(上下左右)的 view之间的距离,若是同一级只有一个view,那么它的效果基本上就和padding同样了。例如个人XML layout代码以下:

view plaincopy to clipboardprint?

[html] view plaincopyprint?

<?xml version="1.0" encoding="utf-8"?>    

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    

    android:orientation="vertical"    

    android:layout_width="fill_parent"    

    android:layout_height="fill_parent"    

    android:paddingLeft="10dip"    

    android:paddingRight="10dip"    

    android:paddingTop="10dip"    

    android:paddingBottom="10dip"    

    >    

<TextView      

    android:layout_width="wrap_content"     

    android:layout_height="wrap_content"     

    android:background="#FF0000"    

    android:text="@string/hello"    

    android:paddingLeft="50dip"    

    android:paddingRight="50dip"    

    android:paddingTop="50dip"    

    android:paddingBottom="50dip"    

    android:layout_marginBottom="10dip"    

    />    

    <TextView      

    android:layout_width="wrap_content"     

    android:layout_height="wrap_content"     

    android:background="#FF0000"    

    android:text="@string/hello"    

    android:paddingLeft="50dip"    

    android:paddingRight="50dip"    

    android:paddingTop="50dip"    

    android:paddingBottom="50dip"    

    android:layout_marginBottom="10dip"    

    />    

    <TextView      

    android:layout_width="wrap_content"     

    android:layout_height="wrap_content"     

    android:background="#FF0000"    

    android:text="@string/hello"    

    android:paddingLeft="50dip"    

    android:paddingRight="50dip"    

    android:paddingTop="50dip"    

    android:paddingBottom="50dip"    

    android:layout_marginBottom="10dip"    

    />    

    <TextView      

    android:layout_width="wrap_content"     

    android:layout_height="wrap_content"     

    android:background="#FF0000"    

    android:text="@string/hello"    

    android:paddingLeft="50dip"    

    android:paddingRight="50dip"    

    android:paddingTop="50dip"    

    android:paddingBottom="50dip"    

    android:layout_marginBottom="10dip"    

    />    

</LinearLayout>    

 

 那么我会获得以下的效果,图上已经很明确的标出来区别咯。

注册广播接收者两种方式的区别。

答案:如今咱们就来实现一个简单的广播程序。Android提供了两种注册广播接受者的形式,分别是在程序中动态注册和在xml中指定。他们之间的区别就是做用 的范围不一样,程序动态注册的接收者只在程序运行过程当中有效,而在xml注册的接收者无论你的程序有没有启动有会起做用。

相关文章
相关标签/搜索