`
sunasheng
  • 浏览: 118975 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

android学习第二天(android的核心组件)

 
阅读更多

 

Android核心组件的讲解

1<LinearLayout>  一般将其他组件或layout放入这个layout

2ListViewLayout)是一个方格其中放组件,相当于下图中一格一格的样式。

 

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的ResourceIdlayout下建立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对象的创建用的是工厂方法

}

});

4resvalues中数组值的获取

上面的程序中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.xmlapplication标签下增加activity标签

<activity android:name=".Activity00"

        android:label="@string/a00_name">

</activity>

第三步:在点击事件中加入如下代码:

Intent intent = new Intent(Main.this,Activity00.class);

                                       //Intent意图(用来封装Activity和Activity互相的消息传递)

startActivity(intent);

7Activity00页面显示联系人列表

 

LinearLayout中放置TextViewListView

ListView中放置两个TextViewname+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>> concatListnew ArrayList<Map<String,Object>>();

concatList.add(new Contact("liu","15330793787").toMap());    Android 中用Map来封装实体

ListAdapter adapter = new SimpleAdapter

(Activity00.thisconcatList,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;

}

});

8ImageViewSD卡中加载图片)

显示图片需要用到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组件化学习Demo

    Android项目组件化学习demo,内容包含底层基础类模块,网络请求类模块,常用工具栏模块,多模块简单集成,内容简单,思想醇厚

    Android四大核心组件详解

    Android四大核心组件 Activity、BroadcastReceiver、Service、ContentProvider

    Android核心组件之Activity

    Android核心组件之一 Activity的相关介绍的源码练习

    Axure Android-L组件库

    axure 的Android-L组件库,比较全

    Android四大组件简述

    Android四大组件简述demo用例。

    android\用户交互View组件学习

    android\用户交互View组件学习android\用户交互View组件学习android\用户交互View组件学习android\用户交互View组件学习android\用户交互View组件学习

    android系统核心和原理

    本书全面介绍开放的移动电话平台android系统,包括android系统中的linux驱动、本地框架、java框架和java应用4个层次。... 本书既适合从事android各个层次开发的工程师阅读,也适合通用嵌入式linux系统的学习者使用。

    Android中自定义组件的过程

    Android APIdemo中关于自定义组件的讲解,自己学习一下

    Android核心技术与实例详解 课件PPT

    安卓学习资料,Android核心技术与实例详解 课件PPT

    android各组件详解 PDF

    android各组件详解 PDF 文档,完整的说解,字迹清楚,不可多得的文档.

    Android 左右侧滑组件

    通过自定义组件的方式,实现类似网易新闻、豌豆荚、人人等侧滑的组件。

    Android核心技术与实例详解

    第二篇介绍了Android平台的高级知识,包括消息与广播服务、网络数据处理、手机通信功能、桌面组件、多媒体采集、Google服务及3D程序开发等;第三篇则对三个真实案例的开发步骤进行详细介绍,逐步向读者讲解Android...

    android桌面小组件

    android桌面小组件官网实例 android桌面小组件

    Android UI组件实例集合

    是 Android 上的一个异步从网络上获取图片并进行浏览的开源组件,可自动在本地进行缓存。该项目是 GreenDroid 的一部分。 13、仿Path按钮动画效果 PathButton 仿照Path应用首页左下角的Button动画效果写了个简单的...

    Android核心技术与实例详解 PDF扫描版

    第二篇介绍了Android平台的高级知识 包括消息与广播服务 网络数据处理 手机通信功能 桌面组件 多媒体采集 Google服务及3D程序开发等;第三篇则对三个真实案例的开发步骤进行详细介绍 逐步向读者讲解Android手机应用...

    安卓Widget小组件相关-androidWidget小组件开发.zip

    android Widget小组件开发.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

    Android组件大全

    所有组件,源代码下载,教你快速入门Android

Global site tag (gtag.js) - Google Analytics