android开发简介

今天,我就简单地来介绍一下android项目的文件结构。算是为android的开发学习开一个头:

1. res目录:用于存放Android项目的各种资源文件。(layout:存放界面布局文件;values:存放各种XML格式的资源文件;drawable-ldbidrawable-mdpidrawable-hdpi:用于存放小、中、大三种图片文件)

2.src目录:保存java源文件的目录。

3.AndroidManifest.XML文件:android项目的系统清单文件,用于控制android应用的名称、图标、访问权限等整体属性。

4.R.java:这是android项目的自动生成的文件。

应用程序权限说明:通过为<manifest.../>元素添加<uses-permission.../>子元素即可为自身声明权限。

调用应用程序自身所需的权限:在<activity.../>元素添加<uses-permission.../>子元素即可声明调用该程序所需的权限。(权限位于Manifest.permission类)

 

五大基本组件

1、Activity组件:android应用中负责与用户交互的组件(View组件是所有UI控件、容器控件的基类)多个activity组成Activity栈,当前活动的Activity位于栈顶;

2、Service组件:通常位于后台运行。其拥有自己独立的生命周期,Service组件通常用于为其他组件提供后台服务或监控其他组件的运行状态。

3、BroadcastReceiver组件:广播消息接收器。

4、ContentProvider、ContentResolver组件:跨应用的数据交换。ContentProvider提供数据,ContentResolver来访问数据。

5、Intent组件:android应用内不同组件之间通信的载体。(activity、Service、BroadcastReceiver三种组件之间的通信都以Intent为载体)

 

两套事件处理机制

1、基于监听的事件处理:委派试事件处理方式(普通组件即事件源将整个事件处理委托给特定的对象即事件监听器,当该事件源发生指定的事件时,就通知所委托的事件监听器,有事件监听器来处理这个事件)

2、基于回调的事件处理:通过自定义View来实现,回调事件处理方法都有一个boolean类型的返回值。

先执行监听事件,在执行事件回调方法

响应系统设置更改:Configuration类(专门用于描述手机设备上的配置信息)

Configuration cfg = getResources().getConfiguration();


Handler消息传递机制:让新启动的线程周期性地改变activity里的界面组件的属性。(作用:1.在新启动的线程中发送消息;2.在主线程中获取、处理消息)

 

Activity详细介绍

ExpandableListActivity:用于显示一个可展开的列表窗口;

PreferenceActivity:用于显示一个显示设置选项参数并进行保存的窗口;

启动其它Activity:1.startActivity(Intent intent);2.startActivityForResult(Intent intent,int requestCode);

关闭Activity:1.finish();2.finish(int requestCode);

使用Bundle在Activity之间交换数据

1.存放数据:1.putExtras(Bundle data);2.putXxx(String key,Xxx data);3.putSerializable(String key, Serializable data)[存放可序列化的对象]

Person p = new Person(name.getText().toString(),passwd.getText().toString(),gender);
//创建一个Bundle对象
Bundle data = new Bundle();
data.putSerializable("person",p);
//创建一个Intent
Intent intent = new Intent(BundleTest.this,ResultActivity.class);
intent.putExtras(data);

2.取出数据:1.getXxx(String key);2.getSerializable(String key,Serializable data)

//获取启动该Result的Intent
Intent intent = getIntent();
//获取该intent所携带的数据
Bundle data = intent.getExtras();
//从Bundle数据包中取出数据
Person p = (Person)data.getSerializable("person");

 

生命周期

1.活动状态:当前Activity位于前台,用户可见,可以获得焦点;

2.暂停状态:其他Activity位于前台,该Activity依然可见,只是不能获得焦点;

3.停止状态:该Activity不可见,失去焦点;

4.销毁状态:该Activity结束,或Activity所在的Dalvik进程被结束;

 

Intent通信

包含5种属性:

1.Component:接收一个ComponentName对象(需要指定包名和类名)

为Intent设置Component属性:

//创建一个ComponentName对象
ComponentName comp = new ComponentName(ComponentAttr.this,SecondActivity.class);
Intent intent = new Intent();
//为Intent设置Component属性
intent.setComponent(comp);

读取Component属性

ComponentName comp = getIntent().getComponent();


2.Action:Intent所要完成的一个抽象“动作”。(一个Intent对象最多只能包括一个Action属性

3.Data:向Action属性提供操作的数据。

4.Category:为Action增加额外的附加信息。

5.Extra:通常用于在多个Activity之间进行数据交换。(实质上为Bundle对象


 数据存储

Android的数据存储主要分为以下几个部分

1.SharedPreference:存储应用程序的配置信息。

preference = getSharedPreference("count",MODE_WORLD_READABLE);
//读取数据
int count = preferences.getInt("count",0);
Editor editor = preferences.edit();
//存入数据
editor.putInt("count",++count);
//提交修改
editor.commit();

2.File存储:访问手机存储器上的文件。(类似于Java的IO流)

3.SQLite数据库:大量数据的读写不应使用SQLite数据库来实现。


手势

手势是指用户手指或触摸笔在触摸屏上的连续触碰行为。

 

数据共享

ContentProvider:类似网站,通过URI向外提供服务;

ContentResolver:类似客户端,通过URI来访问ContentProvider;

 

URI

content://org.crazyit.providers.dictprovider/words。其中

content://:Android所规定的的

org.crazyit.providers.dictprovider:ContentProvider的authority。

words:资源部分

 

Service服务组件

Service组件也是可执行的程序,也有生命周期(startService()->onCreate()->onStart()->Service运行中->服务被通知停止->onDestroy())

启动Service:StartService(intent);

关闭Service:StopService(intent);

上述的启动、关闭,Service与访问者(Activity)不存在太多的关联;

如需要进行方法调用或数据交换则要使用bindService()和unbindService()来启动、关闭服务。

生命周期(bindService()->onCreate()->onBind()->客户端与Service交互中->onUnbind()->onDestroy())

 

BroadcastReceiver接收广播消息

BroadcastReceiver:用于监听系统全局的广播消息。系统监听器——专门负责监听各程序所发出的Broadcast。

 

网络编程

服务器端利用ServerSocket

ServerSocket ss = new ServerSocket(30000);
while(true)
{
    Socket s = ss.accept();
    OutputStream os = s.getOutputStream();
    os.write("您好,您收到了服务器的新年祝福!\n",getBytes("utf-8"));
    os.close();
    s.close();
}

android客户端:

Socket socket  = new Socket("192.168.1.88",30000);
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
string line = br.readLine();
br.close();
socket.close();

授权访问互联网

<user-permission android:name="android.permission.INTERNET" />

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值