Android的核心组件的讲解
1,<LinearLayout> 一般将其他组件或layout放入这个layout
2,ListView(Layout)是一个方格其中放组件,相当于下图中一格一格的样式。
向ListView中赋予内容用到了适配器模式。
·ListAdapter(接口)
通过这个适配器接口可以向ListView中添加多种数据类型的内容,只需要添加不同类型的ListAdapter的实现类即可。
举例:ListView相当于电脑,适配器ListAdapter相当于电脑的适配器,所有的适配器都实现了ListAdapter中的方法,供ListView调用。
·ArrayAdapter
ListAdapter的实现类之一,适合将字符串数组放入ListView中;
------------------第一种方式:
ListAdapter adapter = new ArrayAdapter<String>
(Main.this, R.layout.main_lv_text, mainOptions);
lv.setAdapter(adapter);
/**
* new ArrayAdapter<String>(context, textViewResourceId, objects)
* 参数详解
* context 容器(上下文)架构中第三层提供的接口 任何一个Activity都对应一个Context对象,我在这个Activity中做任何与UI相关的操作的时候都必须提供这个context对象,一般由Main.this来提供(java中没有这样的写法)
* textViewResourceId 这里只是把数组的内容加入到ListView中的一个方格里去,但是数组的内容到了方格里面会采用什么样的布局去排列呢(也就是说ListView是一个layout,真正存放数组内容的还是文本域),这个参数就是表示数组内容到ListView的小方格中的文本域布局layout的ResourceId,layout下建立main_lv_demo.xml文件,其中定义文本框的布局
* objects 要添加的数组
*/
Res下layout下建立main_lv_text.xml文件,文件内容
<?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:text="TextView" android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="30px" android:textColor="#ff0000"/> |
------------------第二种方式:
也可以使用自带的文本布局方式
ListAdapter adapter = new ArrayAdapter<String>
(context, android.R.layout.simple_list_item_1, mainOptions);
lv.setAdapter(adapter);
/**
* android.R.layout.simple_list_item_1
* 系统自带的布局方式
* 这个文字布局就和android系统中的“设置”中的设置项布局相似了
*/
3,为ListView中的组件添加响应事件
lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position,long id) { /** * 参数详解(AdapterView<?> arg0, View arg1, int arg2,long arg3) * AdapterView<?> parent 表示上面的ListView(AdapterView是ListView的父类) * 被点中的ListView * View view 被点中的那个TextView * int position 点击第几个(0,1,2......) * long id 点击TextView的id为这个id的TextView * * 一般前两个参数用的少,第三个参数用的最多 */ String optionValue = mainOptions[position]; //取出数组中的值 //界面中显示 Toast.makeText(Main.this, "你点了"+optionValue, 2000).show();//Toast吐司 /** * Toast.makeText(context, text, duration) * contextMain.this * text 要显示的文本 * duration文本在界面上停留多少毫秒 */ //Tosat对象的创建用的是工厂方法 } }); |
4,res下values中数组值的获取
上面的程序中ListView中要显示的内容来自之前定义的数组
private String[] mainOptions = {"ABC","BCD","DEF"};
但是如果显示的条目数比较多的话,像这种直接初始化数组的方式就不可取。
解决方法是:利用res下的values
在res下的values下建立文件arrays.xml,文件中定义数组内容:
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="main_options"> <item>时间设置</item> <item>安全设置</item> <item>网络设置</item> <item>账户设置</item> <item>出场设置</item> <item>关于手机</item> </string-array> </resources> |
然后再程序中进行初始化:
private String[] mainOptions;
onCreate方法中:
Resources res = getResources();//获取所有的资源对象
mainOptions = res.getStringArray(R.array.main_options);
5,代码及运行结果
代码:Android_Tarena_day02
结果:
6,一屏跳到另外一屏
第一步:src下建立Activity00.java继承Activity,重写onCreate方法
第二步:在AndroidManifest.xml中application标签下增加activity标签
<activity android:name=".Activity00" android:label="@string/a00_name"> </activity> |
第三步:在点击事件中加入如下代码:
Intent intent = new Intent(Main.this,Activity00.class); //Intent意图(用来封装Activity和Activity互相的消息传递) startActivity(intent); |
7,Activity00页面显示联系人列表
LinearLayout中放置TextView和ListView
ListView中放置两个TextView(name+phone)
放置内容:
Contact.java
Private String name; Private String phone; public Map<String,Object> toMap() { Map<String,Object> map = new HashMap<String,Object>(); map.put("name", name); map.put("phone", phone); return map; } |
Activity00.java
List<Map<String,Object>> concatList= new ArrayList<Map<String,Object>>(); concatList.add(new Contact("liu","15330793787").toMap()); Android 中用Map来封装实体 ListAdapter adapter = new SimpleAdapter (Activity00.this, concatList,R.layout.a00_lv_text, new String[]{"name","phone"}, new int[]{R.id.a00_lv_name,R.id.a00_lv_phone}); /** * 参数详解new SimpleAdapter(context, data, resource, from, to) * context Main.this * data 数据(List类型) * resource 布局(int) * from放入的字段组成的数组 * to放入的字段对应layout的id */ lv.setAdapter(adapter); /* * 长按联系人--拨打电话 */ lv.setOnItemLongClickListener(new OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> adapterView, View view, int position, long id) { String phone = (String)concatList.get(position).get("phone"); // Intent intent = new Intent("Intent.ACTION_CALL", Uri.parse("tel:"+phone)); Intent intent = new Intent("android.intent.action.CALL", Uri.parse("tel:"+phone)); /** * 参数详解new Intent(action, uri); * action String动作标记 动作意图(打电话) android.intent.action.CALL * uriUri 动作信息Uri.parse("tel:18391818293") */ startActivity(intent);
/**必要的一步-------申请打电话权限**/ /** * AndroidManifest.xml中<manifest>标签下加 * <uses-permission android:name="android.permission.CALL_PHONE"/> * 也可以使用xml文件下的permissions视图Add-uses permissions-name selected CALL_PHONE */ return false; } }); |
8,ImageView(SD卡中加载图片)
显示图片需要用到ImageView组件:
ImageView iv = (ImageView)findViewById(R.id.a01_image);
public void onClick(View v) {
Bitmap bit = BitmapFactory.decodeFile
("/mnt/sdcard/gang.png");
iv.setImageBitmap(bit);
}
·SD卡的路径:
切换到DDMS视图,Drivers处选中模拟的设备,右面的视图切换到File Explorer,这里面的文件就是代表设备中的文件,发现其中在mnt下有个文件夹为sdcard,所以SD路径为/mnt/sdcard
·如何往SD卡中添加文件:
如下图,往SD卡中添加文件点击1,从SD导出文件点击2,删除SD中文件,点击3。
效果:
相关推荐
Android应用开发的哲学是把一切都看作是组件。把应用程序组件化的好处是降低模块间的耦合性,同时提高模块的复用性。Android的组件设计思想与传统的组件设计思想最大的区别在于,前者不依赖于进程。也就是说,进程...
Android项目组件化学习demo,内容包含底层基础类模块,网络请求类模块,常用工具栏模块,多模块简单集成,内容简单,思想醇厚
Android四大核心组件 Activity、BroadcastReceiver、Service、ContentProvider
Android核心组件之一 Activity的相关介绍的源码练习
axure 的Android-L组件库,比较全
Android四大组件简述demo用例。
android\用户交互View组件学习android\用户交互View组件学习android\用户交互View组件学习android\用户交互View组件学习android\用户交互View组件学习
本书全面介绍开放的移动电话平台android系统,包括android系统中的linux驱动、本地框架、java框架和java应用4个层次。... 本书既适合从事android各个层次开发的工程师阅读,也适合通用嵌入式linux系统的学习者使用。
Android APIdemo中关于自定义组件的讲解,自己学习一下
安卓学习资料,Android核心技术与实例详解 课件PPT
android各组件详解 PDF 文档,完整的说解,字迹清楚,不可多得的文档.
通过自定义组件的方式,实现类似网易新闻、豌豆荚、人人等侧滑的组件。
第二篇介绍了Android平台的高级知识,包括消息与广播服务、网络数据处理、手机通信功能、桌面组件、多媒体采集、Google服务及3D程序开发等;第三篇则对三个真实案例的开发步骤进行详细介绍,逐步向读者讲解Android...
android桌面小组件官网实例 android桌面小组件
是 Android 上的一个异步从网络上获取图片并进行浏览的开源组件,可自动在本地进行缓存。该项目是 GreenDroid 的一部分。 13、仿Path按钮动画效果 PathButton 仿照Path应用首页左下角的Button动画效果写了个简单的...
第二篇介绍了Android平台的高级知识 包括消息与广播服务 网络数据处理 手机通信功能 桌面组件 多媒体采集 Google服务及3D程序开发等;第三篇则对三个真实案例的开发步骤进行详细介绍 逐步向读者讲解Android手机应用...
android Widget小组件开发.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
所有组件,源代码下载,教你快速入门Android