Android基础(一)
来源:互联网 发布:中国现状 知乎 编辑:程序博客网 时间:2024/06/06 02:13
一、布局
1、AbsoluteLayout,其子控件使用layout_x,layout_y来控制位置。
优点:子控件能够最自由的摆放
缺点:受手机屏幕大小影响很大
2、LinearLayout,
属性:
android:orientation="vertical"["horizontal"],vertical:表示子控件垂直摆放,horizontal表示子控件水平摆放
android:baselineAligned="true"["false"]
表示LinearLayout中的子控件的摆放要依据基线来对齐。
true是对齐,false不对齐。
android:baselineAlignedChildIndex="childIndex"
表示以哪一个子控件的基线来对齐。
android:gravity="center_horizontal"
表示子控件对齐的方向,可以向左,右,上,下,居中...
子控件属性:
android:layout_weight="1.0"
这个属性只有在LinearLayout中有效,他表示我们的子控件所需要占据的大小,用于与其他的控件分割父控件的空间。
优点:受屏幕变化影响小,排列整齐
缺点:排列方式少
3、FrameLayout
属性:
android:foreground,可以使用这个属性在整个布局的前面添加一个图片或者颜色。
android:foregroundGravity,调整由android:foreground设置的图片的对齐方向。
优点:有多重动画控件都由FrameLayout实现,说明FrameLayout很适合播放动画的功能界面实现。
缺点:约束比较强,控件摆放的方式只有这一种,对内部控件操作的手段也比较少。
4、RelativeLayout
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,将控件放置在父控件的中间。
优点:内部子控件都是自己相对摆放,在屏幕分辨率出现巨大变化的时候,他们之间的相对位置都不会变。这个布局类型可以很大的减少我们屏幕出现变化时,界面效果的差异性。
缺点:当我们的控件之间的相对关系建立之后,不容易再做修改。
二、Button
1、Button、ImageButton的关系:Button包含了ImageButton
2、Button的点击事件
(1)完全在Activity中关联点击事件
XML文件中
Activity文件中:
(2)在xml布局文件中关联点击事件
XML文件中
Activity文件中
//格式一定要这样写
3、自定义外观
新建一个seletor文件,里面定义了按钮各个状态的背景
三、EditText
1、可输入文本框,这个控件可以让用户输入文本信息。
2、重要属性
(1)android:hint="@string/email_hint"
用来给编辑框加入提示信息,在输入框没有内容的时候会显示
(2)android:inputType="textEmailAddress"
限制我们输入的内容的类型
(3)android:imeOptions="actionSend"
(4)android:password="true"
以密文形式输入信息。改回false之后,就有可以以明文形式输入。
EditText editPassWord = (EditText) findViewById(R.id.ed_password);
//表示明文显示
editPassWord.setInputType(EditorInfo.TYPE_CLASS_TEXT
| EditorInfo.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
四、CheckBox
1、复选框
2、可以使用onClick点击事件,也可以使用OnCheckedChangeListener监听器。使用监听器可以和明文显示密码相结合
XML文件:
Activity文件:
五、ListView
1、列表控件,实现一个数据列表,能方便地让我们修改数据,并同时影响
界面。
2、ListView两种加载数据的方法
(1)XML文件存放数据
1)XML--res_cities.xml
2)Layout用来装ListView
(2)Adapter加载数据
1)Layout
Layout_listview.xml用来装ListView
item_contacts.xml用来定义ListView的每个Item的外观
2)Activity中:
3、动态加载数据
(1)在我们向数据容器中加入了新数据的时候,我们就需要更新ListView更新。
由用户或者服务器更改了数据,然后调用Adapter.notifyDataSetChanged();提醒ListView更新数据。
4、ListView属性
(1)android:divider="@color/mycolor" 间隔线的图片或者颜色
(2)android:dividerHeight="3dip"间隔线的宽度
用于修改ListView中每个item之间的间隔线
(3)
android:stackFromBottom="true"从列表最下方开始。
(4)android:transcriptMode="alwaysScroll"一直显示新来的数据。
(5)
android:cacheColorHint="@android:color/transparent" 滑动时,背
景透明。
(6)如果我们需要ListView显示新数据是从上至下的话,那我们在添加数据的时候,从最上面添加。
1、AbsoluteLayout,其子控件使用layout_x,layout_y来控制位置。
优点:子控件能够最自由的摆放
缺点:受手机屏幕大小影响很大
2、LinearLayout,
属性:
android:orientation="vertical"["horizontal"],vertical:表示子控件垂直摆放,horizontal表示子控件水平摆放
android:baselineAligned="true"["false"]
表示LinearLayout中的子控件的摆放要依据基线来对齐。
true是对齐,false不对齐。
android:baselineAlignedChildIndex="childIndex"
表示以哪一个子控件的基线来对齐。
android:gravity="center_horizontal"
表示子控件对齐的方向,可以向左,右,上,下,居中...
子控件属性:
android:layout_weight="1.0"
这个属性只有在LinearLayout中有效,他表示我们的子控件所需要占据的大小,用于与其他的控件分割父控件的空间。
优点:受屏幕变化影响小,排列整齐
缺点:排列方式少
3、FrameLayout
属性:
android:foreground,可以使用这个属性在整个布局的前面添加一个图片或者颜色。
android:foregroundGravity,调整由android:foreground设置的图片的对齐方向。
优点:有多重动画控件都由FrameLayout实现,说明FrameLayout很适合播放动画的功能界面实现。
缺点:约束比较强,控件摆放的方式只有这一种,对内部控件操作的手段也比较少。
4、RelativeLayout
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,将控件放置在父控件的中间。
优点:内部子控件都是自己相对摆放,在屏幕分辨率出现巨大变化的时候,他们之间的相对位置都不会变。这个布局类型可以很大的减少我们屏幕出现变化时,界面效果的差异性。
缺点:当我们的控件之间的相对关系建立之后,不容易再做修改。
二、Button
1、Button、ImageButton的关系:Button包含了ImageButton
2、Button的点击事件
(1)完全在Activity中关联点击事件
XML文件中
<Button android:id="@+id/btn_login" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Click Me"/>
Activity文件中:
Button button = (Button) findViewById(R.id.button_send);button.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {// Do something in response to button click}});
(2)在xml布局文件中关联点击事件
XML文件中
<Button android:id="@+id/btn_login" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Click Me"android:onClick="myClick"/>
Activity文件中
//格式一定要这样写
public void myClick(View v) {// Do something in response to button click}
3、自定义外观
新建一个seletor文件,里面定义了按钮各个状态的背景
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/btn_bg_pressed" android:state_pressed="true"></item> <item android:drawable="@drawable/btn_bg_hover" android:state_hovered="true"></item> <item android:drawable="@drawable/btn_bg_normal"></item></selector>
三、EditText
1、可输入文本框,这个控件可以让用户输入文本信息。
<EditTextandroid:id="@+id/et_userName"android:layout_width="fill_parent"android:layout_height="wrap_content" />
2、重要属性
(1)android:hint="@string/email_hint"
用来给编辑框加入提示信息,在输入框没有内容的时候会显示
(2)android:inputType="textEmailAddress"
限制我们输入的内容的类型
(3)android:imeOptions="actionSend"
定义软键盘确认按钮的类型,需要我们使用OnEditorActionListener来监听。
class EditorActionlistener implements OnEditorActionListener {@Overridepublic boolean onEditorAction(TextView v, int actionId, KeyEvent event) {switch (actionId) {// 获取到软件盘的命令case EditorInfo.IME_ACTION_NEXT:System.out.println("下一个!");return false;case EditorInfo.IME_ACTION_DONE:System.out.println("完成!");return true;}return false;}}
(4)android:password="true"
以密文形式输入信息。改回false之后,就有可以以明文形式输入。
EditText editPassWord = (EditText) findViewById(R.id.ed_password);
//表示明文显示
editPassWord.setInputType(EditorInfo.TYPE_CLASS_TEXT
| EditorInfo.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
四、CheckBox
1、复选框
2、可以使用onClick点击事件,也可以使用OnCheckedChangeListener监听器。使用监听器可以和明文显示密码相结合
XML文件:
<EditText android:id="@+id/ed_password" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/ed_username" android:layout_marginTop="10dp" android:background="@drawable/ed_bg_selector" android:drawableRight="@drawable/key" android:hint="Your password" android:inputType="textPassword" android:maxLength="10" android:maxLines="1" android:minHeight="50dp" android:singleLine="true" android:textColor="#FFFFFF" android:imeOptions="actionDone"/> <CheckBox android:id="@+id/cb_passvisible" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/ed_password" android:layout_marginTop="5dp" android:text="显示密码" />
Activity文件:
CheckBox checkBox = (CheckBox) findViewById(R.id.cb_passvisible);checkBox.setOnCheckedChangeListener(new CheckedChangeListener());/** * 显示密码CheckBox监听器 * * @author Eric * */class CheckedChangeListener implements OnCheckedChangeListener {@Overridepublic void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {if (isChecked) {//明文显示密码editPassWord.setInputType(EditorInfo.TYPE_CLASS_TEXT| EditorInfo.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);} else {//密文显示密码editPassWord.setInputType(EditorInfo.TYPE_CLASS_TEXT| EditorInfo.TYPE_TEXT_VARIATION_PASSWORD);}}}
五、ListView
1、列表控件,实现一个数据列表,能方便地让我们修改数据,并同时影响
界面。
2、ListView两种加载数据的方法
(1)XML文件存放数据
1)XML--res_cities.xml
<?xml version="1.0" encoding="utf-8"?><resources> <string-array name="cities"> <item >请选择城市</item> <item >沈阳</item> <item >成都</item> <item >合肥</item> <item >德阳</item> <item >江油</item> </string-array></resources>
2)Layout用来装ListView
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" ><ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="match_parent"android:entries="@array/cities" ></ListView></LinearLayout>
(2)Adapter加载数据
1)Layout
Layout_listview.xml用来装ListView
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" ><ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="match_parent"android:entries="@array/cities" ></ListView></LinearLayout>
item_contacts.xml用来定义ListView的每个Item的外观
<TextView android:id="@+id/tv_name" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignTop="@id/iv_head" android:layout_toRightOf="@id/iv_head" android:text="这是一个Item" android:textSize="20sp" />
2)Activity中:
public class ListViewAcivity extends Activity {MyBaseAdapter infoAdapter;AbstractList<String> userInfo = new ArrayList<String>();EditText ed_name;ListView listView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 加载界面setContentView(R.layout.layout_listview);userInfo.add("北京");userInfo.add("上海");userInfo.add("广州");// 找到ListViewed_name = (EditText) findViewById(R.id.ed_name);//infoAdapter = new MyBaseAdapter(userInfo);// 为ListView设置适配器listView.setAdapter(infoAdapter);}/** * 创建一个自己的数据适配器 * * @author Eric * */class MyBaseAdapter extends BaseAdapter {AbstractList<String> userInfo;LayoutInflater inflater;// 适配器public MyBaseAdapter() {}public MyBaseAdapter(AbstractList<String> userInfo) {// 得到数据this.userInfo = userInfo;// 得到LayoutInflater的对象inflater = ListViewAcivity.this.getLayoutInflater();}@Overridepublic int getCount() {// 返回的数值决定了这个ListView装载的数据条数if (userInfo != null) {return userInfo.size();}return 0;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder viewHolder = null;// 对ListView的性能进行优化,convertView是Google给我们的可复用的对象// 当我们的屏幕中间有一个view消失,那么这个view就会被复用,他会用来装入将要显示的// view的内容if (convertView == null) {// 当convertView为空null的时候,那么就说明是第一次创建view,那么就创建一个对象viewHolder = new ViewHolder();// 把ListView的item用布局文件填充,返回了一个view,这个view将会被复用,那么就设置为convertViewconvertView = inflater.inflate(R.layout.item_contacts, null);// 设置ViewHolder里面的内容。viewHolder.tv_name = (TextView) convertView.findViewById(R.id.tv_name);// 将这个装有数据的viewHolder设置成convertView的标签convertView.setTag(viewHolder);}// 得到convertView的标签viewHolder = (ViewHolder) convertView.getTag();// 设置内容viewHolder.tv_name.setText(userInfo.get(position % getCount()));// 返回这个convertViewreturn convertView;}// 这个类用来装载ListView的布局的子控件class ViewHolder {TextView tv_name;}/******************************下面俩个方法我们很少会使用***************************************/@Overridepublic Object getItem(int position) {return null;}@Overridepublic long getItemId(int position) {return 0;}}}
3、动态加载数据
(1)在我们向数据容器中加入了新数据的时候,我们就需要更新ListView更新。
由用户或者服务器更改了数据,然后调用Adapter.notifyDataSetChanged();提醒ListView更新数据。
4、ListView属性
(1)android:divider="@color/mycolor" 间隔线的图片或者颜色
(2)android:dividerHeight="3dip"间隔线的宽度
用于修改ListView中每个item之间的间隔线
(3)
android:stackFromBottom="true"从列表最下方开始。
(4)android:transcriptMode="alwaysScroll"一直显示新来的数据。
(5)
android:cacheColorHint="@android:color/transparent" 滑动时,背
景透明。
(6)如果我们需要ListView显示新数据是从上至下的话,那我们在添加数据的时候,从最上面添加。
0 0
- Android基础(一)
- Android基础(一)
- Android基础(一)
- **Android** 基础(一)
- Android基础(一)
- Android Notification 基础(一)
- Android基础进阶(一)
- Android基础学习(一)
- Android 基础概述(一)
- Android应用程序基础(一)
- android基础知识点(一)
- Android 基础进阶 (一)
- Android Studio 基础(一)
- <Android 基础(一)> Service
- Android基础总结(一)
- Android基础(一)--Android开发开始
- android学习笔记一(基础篇)
- Android近场通信---NFC基础(一)
- Java 序列化
- Blocks Programming Topics
- 那些让你犯迷糊的hibernate参数意思详解
- vb.net正则表达式快速入门(2)
- Unuser Variable‘ ’
- Android基础(一)
- jquery DataTables中文使用说明
- WV.4-动态链表-新输入的数字对应的结点放在链表末尾
- Solr4.10.2集成Nutch1.9与自带UI界面使用
- zendFramework2 redis练手
- HTML5实现的Notifications桌面消息提醒功能
- MINA源码分析1:服务器端的启动过程
- JSON 转换
- 我们终是不再联系