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基础知识 ...
在第二天的学习内容中,我们可以推测会涵盖一些Android开发的基础概念和关键知识点。 1. **Android简介**:Android是Google主导的开源操作系统,广泛应用于智能手机和平板电脑。它提供了一个全面的开发环境,让...
"android第二天笔记"可能会深入讲解Android的布局管理,如LinearLayout、RelativeLayout和ConstraintLayout,以及如何使用XML来设计用户界面。同时,你还会接触到资源管理,如字符串、颜色、图片资源的使用,以及...
从提供的标签"几个android的小程序"以及压缩包内的文件名称,我们可以推断这是一系列逐步进阶的学习材料,可能包括了从第一天到第二天的学习内容。 首先,让我们来看看`Android_day01`的相关内容。在第一天的学习中...
本压缩包文件"3G手机Android应用开发第二天代码.rar"可能包含了一天课程的学习代码示例,旨在帮助初学者深入理解Android应用的构建过程。 Android应用开发主要基于Java语言,使用Android SDK(Software Development...
第二天的讲解重点可能是深入Android组件,特别是Activity和Intent。Activity是Android应用中的一个视觉工作单元,而Intent则用于在组件间传递消息。学员将了解如何启动Activity,处理生命周期方法,以及使用Intent...
在“第二天android项目 基本空间的用法”中,我们将会探讨如何有效地利用各种UI元素,如按钮(Button)和菜单(Menu),来创建交互式和功能丰富的应用。 首先,Android中的基本空间主要指的是布局(Layout),它是...
【第二天:UI组件与布局管理】 在"day2"(可能是day18)的课程中,将深入研究Android用户界面(UI)组件,如TextView、Button、EditText等,以及如何使用布局管理器(如LinearLayout、RelativeLayout和...
在“传智播客_Andorid_20天精通Android开发视频_第2天视频”这一资源中,我们可以深入学习...这个压缩包中的第二天视频,会是这段学习旅程中承前启后的一环,帮助你从入门到深入理解Android开发的关键概念和技术。
在第一天和第二天的课程中,你可能已经接触过Hello World程序,第三天可能会更进一步,通过创建一个简单的Android应用来实践这些概念。这可能包括布局设计,使用XML文件描述用户界面,以及在Java代码中控制UI元素。...
【ArcGIS for Android 访问天地图】 ArcGIS for Android 是Esri公司为移动设备开发的一款强大的地理信息系统(GIS)开发框架,它允许开发者在Android平台上构建地图应用,实现地图显示、地理编码、地理分析等功能。...
在Android平台上,开发一个能够精确计算农历二十四节气的应用是一个具有挑战性和实用性的项目,尤其对于计算机科学与技术专业的毕业生来说,这样的毕业设计能够展示出扎实的编程基础和对传统文化的理解。下面将详细...
13. **第二日学习内容**:根据"第二天.md"文件名推测,这部分可能详细介绍了上述的一些概念或进行了更深入的实践操作,可能包括创建新项目、运行第一个应用、理解Activity生命周期、使用布局设计界面等。 14. **无...
在“day0220100329”这个文件名中,我们可以推测这是课程的第二天内容,可能涵盖了更深入的HAL开发实践或者特定模块的实例分析。可能包括了如何处理中断、线程同步、错误处理等方面的知识。 此外,2010年3月的培训...
在Android开发中,第一天和第二天的学习可能已经涵盖了环境搭建、基本布局和控件的使用等内容。而“第三天修”的课程,则更进一步,深入探讨更多关键知识点: 1. **Activity生命周期**:Activity是Android应用的...
在Android开发中,日历组件是许多应用必不可少的一部分,它帮助用户查看和管理时间安排。本文将详细探讨如何实现一个简单的安卓日历组件,包括周日历和月日历的展示,以及支持滑动切换视图来选择日期的功能。我们将...