android基础1

来源:互联网 发布:局域网网络直播 编辑:程序博客网 时间:2024/06/08 13:48

一、资源访问

1、资源:

Android中的资源是指非代码部分,是指代码中使用的外部文件,res目录下的资源可通过R资源类直接访问,

包括图片、字符串、菜单、字体、风格、颜色、布局信息等。

2、布局文件:

在开发中使用率最多的的一种文件,在Android中可以将屏幕中组件的布局方式定义在一个XML文件中。

3、获取资源的方法:

通过Activity.setContentView()方法,将布局展现在Activity上。

4、原理:

通过LayoutInflater类将XML文件中的组件解析为可视化的视图组件。

5、实现步骤:

5.1、在res/layout目录下创建一个demo_layout.xml布局文件。

5.2、使用RelativeLayout嵌套一个LinearLayout来进行布局,往里添加一个TextView和两个Button,并设置属性。

5.3、创建一个FirstLayoutActivity类,在onCreateView()方法中,使用findViewById()实例化组件。

二、布局

1、布局类型:
AbsoluteLayout,绝对布局,使用坐标系规范屏幕,原点在左上角,x向右是正方向,y向下是正方向。

1.1关键属性:
layout_x,layout_y,在AbsoluteLayout中放置控件时,这两个属性是AbsoluteLayout特有的,只能在AbsoluteLayout中的控件才能使用。他们用来确定指定的控件的摆放坐标(控件左上角的坐标)。

1.2优缺点:
优点:使用AbsoluteLayout,能够最自由地去摆放我们界面上的控件。

缺点:由于AbsoluteLayout是使用坐标系的方式来确定子控件的摆放位置,但是由于Android平台屏幕的碎片化,我们不能确定用户的屏幕分辨率,那么我们贸然使用这种布局类型,可能让用户感受不一样,影响用户体验。

2.LinearLayout

线性布局,所有的子控件都排成一列整齐摆放。

2.1关键属性:
LinearLayout属性:
android:orientation="vertical"["horizontal"]
表示LinearLayout中的子控件的摆放方向,vertical垂直摆放(从上到下)。horizontal水平摆放(从左到右)。

android:baselineAligned="true"["false"]
表示LinearLayout中的子控件的摆放要依据基线来对齐。
true是对齐,false不对齐。

android:baselineAlignedChildIndex="childIndex"
表示以哪一个子控件的基线来对齐。

android:gravity="center_horizontal"
表示子控件对齐的方向,可以向左,右,上,下,居中...

子控件属性:
android:layout_weight="1.0"
这个属性只有在LinearLayout中有效,他表示我们的子控件所需要占据的大小,用于与其他的控件分割父控件的空间。


2.2优缺点:
优点:线性布局,受到屏幕分辨率影响最小。子控件排列整齐。

缺点:子控件只能按照指定的几种方式摆放,可能无法适应商业项目中部分花样繁多的功能界面的需求。


3.FrameLayout

帧布局,放置在内部的所有控件都会分层摆放,一个控件一层。后放入的控件会摆放在最上面的层里。如果最上面的一层的控件不够大,我们也能够看到他下面的其他控件。

3.1关键属性:
FrameLayout属性:
android:foreground,可以使用这个属性在整个布局的前面添加一个图片或者颜色。
android:foregroundGravity,调整由android:foreground设置的图片的对齐方向。

3.2优缺点
优点:有多重动画控件都由FrameLayout实现,说明FrameLayout很适合播放动画的功能界面实现。

缺点:约束比较强,控件摆放的方式只有这一种,对内部控件操作的手段也比较少。

4.RelativeLayout

相对布局,通过父控件的边或者以前设置的控件的位置,来确定现在放入的新的控件的位置。

4.1子控件的属性:
android:layout_alignParentTop
android:layout_alignParentBottom
android:layout_alignParentLeft
android:layout_alignParentRight,贴到指定的父控件的边缘。

android:layout_toLeftOf
android:layout_toRightOf
android:layout_toStartOf
android:layout_toEndOf,放置在指定id的控件的指定方向上。

android:layout_above
android:layout_below,放置在指定id的控件的上或下。

android:layout_alignLeft
android:layout_alignRight
android:layout_alignTop
android:layout_alignBottom,与指定id的控件边缘对齐。

android:layout_centerInParent,将我们的控件放置在父控件的中间。

4.2优缺点
优点:内部子控件都是自己相对摆放,在屏幕分辨率出现巨大变化的时候,他们之间的相对位置都不会变。这个布局类型可以很大的减少我们屏幕出现变化时,界面效果的差异性。

缺点:当我们的控件之间的相对关系建立之后,不容易再做修改。

5.Tablelayout

表格布局,不过必须配合TableRow使用,否则就是一个垂直排列的线性布局。

5.1关键属性:
TableLayout:
android:stretchColumns="0"拉伸列,列号从0开始。
android:collapseColumns="0"隐藏列,同上。
android:shrinkColumns="0"收缩列,同上。

TableRow:
android:weightSum="5",此属性与控件的 android:layout_weight="1"一起使用,用来设置一行的所有控件的大小。

6.GridLayout(只有新版本可以使用,在4.0版本后可以使用)

网格布局,不需要TableRow这么麻烦
6.1关键方法
android:columnCount="3"
android:rowCount="5"
可以通过上面两个方法方便设置我们网格布局的行数和列数。
子控件也可以使用android:layout_column="1"来设置子控件想排在第几个。

三、常用控件

Android常用的输入控件有Button,EditText , TextView,CheckBox,RadioButton , .DatePicker,TimePicker等
1.Button ,按钮
现在我们先来看看Button。常用Button有3中:
1.1当你只需要在按钮上放置文字信息时,可以使用Button。
1.2当你只需要在按钮上放置图片时,可以使用ImageButton。
1.3当你需要在按钮上同时放置文字和图片时,可以使用Button。
只有文字信息的按钮:

<Button    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="@string/button_text" />
只含有图片的按钮:

<ImageButton    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:src="@drawable/button_icon" />
同时含有文字和图片的按钮:
<Button    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="@string/button_text"    android:drawableLeft="@drawable/button_icon" />
1.4常用属性:
1.4.1.使用android:onClick属性
这种方式可以方便地响应按钮的单击事件。
(1).在XML文件中的Button标签中加入android:onClick属性。
(2).在加载这个XML文件的Activity中加入一个固定格式的方法:
public  void  响应方法名(View view){}
(3).将响应方法的名字填入android:onClick的值中。
使用android:backgroud来设置一个新的外观。
新的外观图片制作一个selector

1.5 onClickListener
1.5.1 获取Button对象。
1.5.2 创建View.OnClickListener的对象。
1.5.3 然后将View.OnClickListener的对象交给Button对象。

2.EditText:可输入文本框,这个控件可以让用户输入文本信息。

<EditText    android:id="@+id/email_address"    android:layout_width="fill_parent"    android:layout_height="wrap_content" />
2.1属性:
android:hint="@string/email_hint"属性:编辑框加入一个提示信息。
android:inputType="textEmailAddress" 调整软键盘样式,得到只有数字或者方便输入邮箱地址的软键盘。
android:imeOptions="actionSend"自定义软键盘中确认按钮。
android:password="true"以密文形式输入信息。改回false之后,以明文形式输入。
我们加入了IMEOptions属性后,我们需要一个监听器来监听这个按钮的响应:
EditText editText = (EditText) findViewById(R.id.search);editText.setOnEditorActionListener(new OnEditorActionListener() {    @Override    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {        boolean handled = false;        if (actionId == EditorInfo.IME_ACTION_SEND) {            handled = true;        }        return handled;    }});
除EditText外,我们还有AutoCompleteTextView作为文字信息输入的控件。

3.TextView,文本框。
3.1常用属性:
android:text 文本信息
android:textSize 字体大小(单位sp)
android:textColor 字体颜色
android:autoLink 能使文字中的电话号码,网址,邮箱变成类似于超链接的样子。
android:lines 行数
android:maxLength 最大字数


4.CheckBox,多选框。
我们一样可以使用标签形式将这种控件加入我们的应用。
当然关键也是在于如何监听这个控件。
4.1我们可以使用设置onClick的方式加入一个写在Activity中的点击响应
方法。
4.2我们可以使用多选框的监听器:OnCheckedChangeListener
自定义样式:
在android:button属性上设置Selector。


5.RadioButton,单选框。
这个控件不能单独使用,需要与RadioGroup一起使用。
然后给我们的RadioGroup加入一个OnCheckedChangeListener来监
听我们的选择监听。不过这里一定要注意这个监听器和多选框的可不是
一个,注意他们的包名!


6.DatePicker,TimePicker 日期和时间
    在布局文件中定义DatePicker和TimePicker,然后通过Canlendar类获得系统时间,通过init方法将日期传给DatePicker,
    并设置OnDateChangedListener来监听日期改变,当时间被改变时需要设置setOnTimeChangedListener监听来设置时间。

<DatePicker       android:id= "@+id/datePicker"      android:layout_width="wrap_content"      android:layout_height="wrap_content"/> <TimePicker       android:id= "@+id/timerPicker"      android:layout_width="wrap_content"      android:layout_height="wrap_content"/>
7. ListView,列表控件

实现一个数据列表,方便修改数据,同时影响界面。

<ListView        android:id="@+id/listview"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:entries="@array/Cities" ></ListView>
7.1 常用属性
android:divider="@color/mycolor" 间隔线的图片或者颜色
android:dividerHeight="3dip" 间隔线的宽度
用于修改ListView中每个item之间的间隔线。

android:stackFromBottom="true"从列表最下方开始。
android:transcriptMode="alwaysScroll"一直显示新来的数据。
android:cacheColorHint="@android:color/transparent" 滑动时,背
景透明。
7.2 使用适配器的方式显示ListView:
1.在布局文件中,定义一个简单的ListView标签。
2.在Activity中实现一个我们自己扩展的BaseAdapter子类对象。
3.通过findViewById在Activity中找到布局文件中的ListView对象。
4.将适配器对象设置给我们的ListView对象。
ListView,只能通过适配器,加载他的子控件。

7.3 ListView动态内容的动态添加
1.由用户或服务器获取的数据,更新我们的数据容器。
2.然后调用Adapter.notifyDataSetChanged();来提醒ListView数据已经更新,
界面需要刷新。

7.4 ListView性能优化:
1.复用convertView
在getView的参数列表中,提供给我们了一个convertView,这个视图对象提供了一种性能优化的手段:复用刚推出屏幕范围的那个convertView。

2.减少findViewById的使用次数
在convertView中有一个Object类型的tag属性,可在这个属性上存储一个对象。利用这个对象存一个定义的内部类对象,这个对象保存
convertView的子控件对象。这样复用convertView的时候也就可以复用以前取出的子控件对象了。

8.AdapterView
Adapter是适配器,适配器是用来连接两个不相干的事物的桥梁。同时,适配器是用来连接我们的AdapterView和数据。

AdapterView中我们常用的有:ListView(列表控件),GridView(网格控件),
Gallery(画廊)。





0 0
原创粉丝点击