Android考点总结

注意:该文档所述一切依据于珏爷提供的图片(其实就是把珏爷的记录弄成word文档啦)以及大屌提供的信息编写而成……

有代码的建议各位看下,很大可能会考(个人猜测而已,依据?直觉而已……)

我不怎么会表达,也不怎么会说话,如果我有什么说错的地方,你来打我啊(网上比较流行的梗,无视我吧)

不改了!累不爱有木有!!!/(ㄒoㄒ)/~~

补充:

权限声明:

Sdcard:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> 网络:

<uses-permission android:name=”android.permission.INTERNET”></uses-permission>

短信权限: <uses-permission android:name="android.permission.SEND_SMS"/>

读取联系人权限:

android.permission.READ_CONTACTS

1. Android平台架构特性:(五部分)P3-P5

? 应用程序层

? 应用程序框架

? 函数库

? Android运行时

由两部分组成:Android核心库集和Dalvik虚拟机

Dalvik特点:运行专有的.dex文件;基于寄存器实现。

? Linux内核

2. 什么是android(自行翻译吧)

Android is a software stack for mobile devices that includes an operating system, middleware and key applications. The Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.

渣翻+简略版:Android是一个用于移动设备的操作系统。 Android SDK提供了必要的工具和API,使开发人员能够在Android平台上使用Java编程语言开发应用程序。

3. Android特点()

快捷方便的开发应用

Android平台为开发人员提供了大量的实用库和工具,开发人员可以很快速的创建自己的应用。例如通过几行代码就能实现一个地图应用。

4. Android应用结构分析(p24-30)

? res:存放android项目的各种资源文件

? src:存放java源文件的目录

? AndroidManifest.xml:android项目的系统清单文件,用于控制android应用的名称、

图标、访问权限等整体属性

5. setContentView显示组件和布局(P40)

? setContentView(R.layout.<资源文件名>)

6. AndroidManifest(P28)

通常包含如下信息:

? 应用程序的包名(应用唯一标识)

? 应用程序所包含的组件(如:Activity,Service,BroadcastReceiver,Content,Provider

等)

? 应用程序兼容的最低版本

? 应用程序使用系统所需的权限声明(如sd卡的访问,系统自带图库调用等) ? 其他程序访问该程序所需的权限声明(如res资源目录的访问,SharedPreferences

的访问等)

7. 控制UI界面三种方式:

? 使用XML布局文件控制(P41)

? 在代码中控制(P42)

? XML布局文件和java代码混合控制(P43)

8. 布局管理器:5个(对应特点)(P46)

? 线性布局(LinearLayout):可控制组件横或纵向排列

? 表格布局(TableLayout):通过TableRow与其他组件控制行列数,自身继承于

LinearLayout

? 帧布局(FrameLayout):直接继承于ViewGroup组件

? 相对布局(RelativeLayout):子组件的位置总是相对兄弟组件、父容器决定 ? 绝对布局(AbsoluteLayout):组件位置、大小均由开发人员控制

9. 布局组件的属性P60 P79

对常用组件的属性有个大概了解即可,例如背景图片、背景颜色、字体大小等

10. 具体组件运用:Button和ImageButton的功能与用法(P66)

Button显示的是文字,ImageButton显示的是图片

扫一眼ImageButton的src属性和background属性吧

监听你懂的……懒得写

11. 简述Android两种事件处理机制(100字左右)

? 基于监听的事件处理(P145)

主要做法就是为android界面组件绑定特定的事件监听器。(23字)

? 基于回调的事件处理(P156)

主要做法就是重写android组件特定的回调方法,或者重写activity的回调方法。(30字)

一般来说,基于回调的事件处理可用于处理一些具有通用性的事件,基于回调的事件处理代码会显得比较简洁。但对于某些特定的事件,无法使用基于回调的事件处理,只能采用基于监听的事件处理。(88字)

140多字……够了吧

12. 调用activity内部类(P151)

个人觉得这个内部类是指监听的内部类

13. Android事件处理的方法(五种方式)(P151-155)

? 内部类作为事件监听类(内部类需引用对应监听接口)

class myListener implements View.OnClickListener{

public void onClick(View view){

} //相应功能

}

? 外部类(需引用对应接口)

public MyListener implements View.OnClickListener{

……

public void onClick(View view){

//相应功能

}

……

}

Activity使用外部类方法:

View.setOnClickListener(new MyListener());

? Activity本身(Activity引用对应监听器接口)

public MyActivity extends Activity implements View.OnClickListener{

……

//使用的时候直接view.setOnClickListener(this);

Public void onClick(View view){}

……

}

? 匿名内部类

View.setOnClickListener(new OnClickListener(){

public void onClick(View v){}

});

? 直接绑定到标签

xml文件中用 android:onClick=”方法名”

对应的activity中:

Public void 方法名(View source){

//具体实现

}

14. Handler消息传递机制两种事件的对比(P166)

? 在新启动的线程中发送消息

new Timer().schedule(new TimerTask(){

public void run(){

Message msg=new Message();

});

? 在主线程中获取、处理消息

//为啥用final修饰?看看上面的方法吧

final Hand myHandler=new Handler(){

public void handleMessage(Message msg){

if(msg.what==0x1233){

//相关操作

}

}

}

15. 配置activity(P177)

<activity android:name=”……”

android:icon=”……”

android:label=”……”

……

>

……

</activity>

16. 启动和关闭activity(p179)

启动:

? startActivity(Intent intent):启动其他Activity

? startActivityForResult(Intent intent,int requestCode):以指定请求码启动Activity,且

程序将会等到新启动Activity返回的结果

关闭:

? finish():结束当前activity

? finishActivity():结束以startActivityForResult方法启动的activity

} msg.what=0x1233;//标记 myHandler.sendMessage(msg);

17. 回调(P189-195)

当Activity被部署在Android应用中之后,随着应用的运行, Activity会不断地在不同的状态之间切换,该Activity中特定的方法就会被回调。

18. Android的生命周期(P191)

? 四个状态:

? 活动状态

? 暂停状态

? 停止状态

? 销毁状态

? 方法:

? onCreate(Bundle savedStatus):创建activity时被回调

? onStart():启动activity时被回调

? onRestart():重新启动

? onPause

? onStop

? onDestroy

19. 多个activity之间消息的传递(程序设计)(主要是Intent和Bundle)

Intent、IntentFilter(P196)

例子:

package com.ray.test;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.MotionEvent;

public class TestBundle extends Activity {

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

}

public boolean onTouchEvent(MotionEvent event) {

Intent intent = new Intent();

intent.setClass(TestBundle.this, Target.class);

Bundle mBundle = new Bundle();

mBundle.putString("Data", "ray'blog");//压入数据

intent.putExtras(mBundle);

startActivity(intent);

finish();

return super.onTouchEvent(event);

}

}

package com.ray.test;

import android.app.Activity;

import android.os.Bundle;

public class TargetActivity extends Activity{

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Bundle bundle = getIntent().getExtras();

String data=bundle.getString("Data");//读出数据

setTitle(data);

}

}

20. Intent里面七个属性(书上只找到六个)

※Component属性(p198)

Action属性(p200)

※Category属性(p200)

Data属性(p209)

Type属性(p209)

Extra属性(p211)

21. xml布局文件(第六章,P213)

22. Android应用资源可分为两大类(P214)

? 无法直接访问的原生资源,保存在assets目录下(以android开头那类资源,

例:android.R.drawable.XXX)

? 可通过R资源清单类访问的资源,保存在res目录下(项目自带的R文件,跟android

那个不一样……这个你忘了的话……我旁边有堵墙,欢迎来撞)

23. 数据存储SharedPreferences(P308)

设置: Editor sharedata = getSharedPreferences("data", 0).edit();

sharedata.putString("item","hello getSharedPreferences");

sharedata.commit();

获取:

SharedPreferences sharedata = getSharedPreferences("data", 0);

String data = sharedata.getString("item", null);

24. SQLite(增删改查方法怎么写)(P321)

? 增:insert(String table,String nullColumnHack,ContentValues values)

? 删:delete(String table,String whereClause,String[] whereArgs)

? 改:update(String table,ContentValuse,String whereClause,String[] whereArgs)

? 查:Cursor query(String table,String[] columns,String selection,String[]

selectionArgs,String groupBy,String having,String orderBy)

(估计考的是下面这个,考了上面的别揍我)

可以直接使用execSQL(String SQL)进行delete,insert,update操作

select操作方法为rawQuery(String SQL, String[] selectionArgs)一般selectionArgs为null,返回类型为Cursor,再从Cursor中提取出来相应数据

25. SQLiteOpenHelper(P330)

26. SqlLite判断方法(表存在if not exist)

db.execSQL("create table if not exists notebooks(notebook_name varchar(255) PRIMARY KEY)");//当表notebooks不存在的时候创建表

27. ContentProvider原理(无代码)(第九章,P351)

28. Service绑定(P374)

Public class FirstService extends Service{

//必须重写onBind Public IBinder onBind(Intent intent){

} …… return null;//或renturn IBinder对象;

}

AndroidManifest.xml

<service android:name=”.FirstService”>

<intent-filter>

<action android:name=”自定义字符串” />

</intent-filter>

</service>

Activity使用:

final Intent intent=new Intent();

intent.setAction(“对应上面的字符串”);

//启动Serivce startService(intent);

//停止Serivce stopService(intent);

29. 绑定本地service(P377)

30. Service的生命周期(P381)

31. 跨进程调用service(P382)

32. 接收广播消息(P413)

33. BroadCast原理(一点点编程)(P413)

大屌说的考点:

1、一个Android应用中的src目录,res目录下的drawable-xdpi、layout文件夹、values文件夹,R.java文件,AndroidManifest.xml文件的作用分别是什么?

? src目录是保存java代码的;res目录下的drawable-xdpi文件夹用来保存图片;layout

文件夹保存xml的布局文件;values文件夹保存各种的资源文件;R.java文件映射xml资源文件的id,drawable,string等属性的;AndroidManifest.xml是项目的activity的配置。

2、菜单的使用,编写程序实现如下所示的效果。

Android考点总结

Android考点总结

Android考点总结

图3 初始界面 图4 点模拟器上的Menu后的界面 图5 单选菜单

Android考点总结

Android考点总结

Android考点总结

图6 EditText显示选择结果 图7 复选菜单

Java代码如下:

package com.example.android_first_2;

import android.app.Activity;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.SubMenu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.EditText;

public class MainActivity extends Activity {

//定义菜单项的id

final int HOMEWORK_FINISH=0x11;

final int HOMEWORK_UNFINISH=0x10;

final int RED=0x111;

final int GREEN=0x112;

final int BLUE=0x113;

//所需要的组件

private EditText edit;

private MenuItem[] item;

@Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.main);

//获取对象 图8 EditText显示选择结果

} edit=(EditText) findViewById(R.id.test); item=new MenuItem[3]; @Override public boolean onCreateOptionsMenu(Menu menu) { } @Override public boolean onOptionsItemSelected(MenuItem item) { // 回调执行 switch(item.getItemId()){ case HOMEWORK_FINISH: //设置文本 edit.setText("你选择的是:"+item.getTitle()); //手动设置为选中 //生成作业完成情况的菜单 SubMenu homework=menu.addSubMenu(R.string.sub1); //设置图标 homework.setIcon(R.drawable.gender); //设置标题头的图标 homework.setHeaderIcon(R.drawable.gender); //设置标题头的标题 homework.setHeaderTitle(R.string.sub1title); //加入菜单项 homework.add(0, HOMEWORK_FINISH, 0, R.string.homework_finish); homework.add(0, HOMEWORK_UNFINISH, 0, R.string.homework_unfinish); //设置单选 homework.setGroupCheckable(0, true, true); //生成颜色子菜单 SubMenu color=menu.addSubMenu(R.string.sub2); //设置图标 color.setIcon(R.drawable.color); //设置标题头的图标 color.setHeaderIcon(R.drawable.color); //设置标题头的标题 color.setHeaderTitle(R.string.sub2title); //加入菜单项,设置为复选 item[0]=color.add(0, RED, 0, R.string.red).setCheckable(true); item[1]=color.add(0, GREEN, 0, R.string.green).setCheckable(true); item[2]=color.add(0, BLUE, 0, R.string.blue).setCheckable(true); //设置快捷键 item[2].setAlphabeticShortcut('u'); return true;

} } item.setChecked(true); break; //设置文本 edit.setText("你选择的是:"+item.getTitle()); //手动设置为选中 item.setChecked(true); break; //手动设置为选中 if(item.isChecked()){ } //设置文本 showColor(); break; //手动设置为选中 if(item.isChecked()){ } //设置文本 showColor(); break; //手动设置为选中 if(item.isChecked()){ } //设置文本 showColor(); break; item.setChecked(false); item.setChecked(true); }else{ item.setChecked(false); item.setChecked(true); }else{ item.setChecked(false); item.setChecked(true); }else{ case HOMEWORK_UNFINISH: case RED: case GREEN: case BLUE: return true; //设置文本 public void showColor(){ String[] colorName={"红色","绿色","蓝色"};

} } String result="您喜欢的颜色有:"; for(int i=0;i<item.length;i++){ } //设置文本 edit.setText(result); //选中时加颜色名字 if(item[i].isChecked()){ } result+=colorName[i]+"、";

Main.xml代码如下:

<RelativeLayout xmlns:android="/apk/res/android" xmlns:tools="/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context=".MainActivity" >

<EditText

android:id="@+id/test"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:hint="@string/tips"/>

</RelativeLayout>

Strings.xml代码如下:

<?xml version="1.0" encoding="utf-8"?>

<resources>

<string name="app_name">作业1</string>

<string name="action_settings">Settings</string>

<string name="hello_world">Hello world!</string>

<string name="tips">复选菜单和单选菜单的使用</string>

<string name="sub1">作业完成情况</string>

<string name="sub1title">请选择作业完成情况</string>

<string name="homework_finish">已完成</string>

<string name="homework_unfinish">未完成</string>

<string name="sub2">喜欢的颜色</string>

<string name="sub2title">请选择你最喜欢的颜色</string>

<string name="red">红色</string>

<string name="green">绿色</string>

<string name="blue">蓝色</string>

</resources>

2、 启动其它Activity并返回结果。运行效果如下,请编写程序。

Android考点总结

Android考点总结

//main.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

xmlns:android="/apk/res/android" android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

<TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="用于显示返回结果" />

<EditText

android:id="@+id/result"

android:layout_width="fill_parent"

android:layout_height="wrap_content"/>

<Button

android:id="@+id/go"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="切换到第二个Activity"

android:layout_gravity="right"/>

</LinearLayout>

//second.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

xmlns:android="/apk/res/android" android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical" >

<EditText

android:id="@+id/text"

android:layout_width="fill_parent"

android:layout_height="wrap_content"/>

<Button

android:id="@+id/back"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="返回结果到第一个Activity"

android:layout_gravity="right"/>

</LinearLayout>

//Week14_work2_2Activity.java

public class Week14_work2_2Activity extends Activity {

/** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); et = (EditText) findViewById(R.id.result); button = (Button) findViewById(R.id.go); button.setOnClickListener(new OnClickListener() { public void onClick(View source) { //定义Intent关联两个Activity Intent intent = new private EditText et; private Button button;

Intent(Week14_work2_2Activity.this,SecondActivity.class);

} } } //启动Activity并等待requestCode为0的数据 startActivityForResult(intent, 0); }); @Override protected void onActivityResult(int requestCode, int resultCode, } Intent intent) { //通过requestCode和resultCode指定接受指定信息 if (requestCode == 0 && resultCode == 0) { } Bundle data = intent.getExtras(); et.setText(data.getString("result"));

//SecondActivity.java

public class SecondActivity extends Activity {

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second); et = (EditText) findViewById(R.id.text); button = (Button) findViewById(R.id.back); button.setOnClickListener(new OnClickListener() { public void onClick(View source) { } //定义Intent关联Activity Intent intent = new Intent(SecondActivity.this, Week14_work2_2Activity.class); //定义Bundle并存入key为"result"的String数据 Bundle data = new Bundle(); data.putString("result", et.getText().toString()); //将Bundle存入Intent intent.putExtras(data); //传输Intent并设置resultCode为0 SecondActivity.this.setResult(0, intent); //Activity自身调用finish()终结生命 SecondActivity.this.finish(); private EditText et; private Button button;

} } });

3、按照要求,采用相对布局,实现如下界面。

Android考点总结

//main.xml

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout

xmlns:android="/apk/res/android" android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

<TextView

android:id="@+id/textView1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Type here:"

android:textColor="#ff0000"

android:textSize="20sp" />

<EditText

android:id="@+id/editText1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignLeft="@+id/textView1"

android:layout_alignParentRight="true"

android:layout_below="@+id/textView1"

android:layout_marginTop="15dp"

android:ems="10" >

</EditText>

<Button

android:id="@+id/button1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignBaseline="@+id/button2"

android:layout_alignBottom="@+id/button2"

android:layout_alignParentRight="true"

android:text="OK" />

<Button

android:id="@+id/button2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_below="@+id/editText1"

android:layout_toLeftOf="@+id/button1"

android:text="Cancel" />

</RelativeLayout>

4、设计如下图所示的工程,当点击“打开华软MySise系统”按钮时,打开浏览器进入该网址,点击“向138xxxxxxxx拨号”按钮,出现如下图所示界面。

Android考点总结

Android考点总结

Android考点总结

//main.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

xmlns:android="/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

<TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="Data属性测试" />

<Button

android:id="@+id/bn1"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="打开MySise" />

<Button

android:id="@+id/bn2"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="向138xxxxxxxx拨号" />

</LinearLayout>

//Week14_work2_4Activity.java

public class Week14_work2_4Activity extends Activity {

Button bn2 = (Button) findViewById(R.id.bn2); /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button bn1 = (Button) findViewById(R.id.bn1); bn1.setOnClickListener(new OnClickListener() { public void onClick(View v) { } Intent intent = new Intent(); String data = ".cn"; //用静态parse()方法将String转换为Uri Uri uri = Uri.parse(data); //为Intent设置Action属性 intent.setAction(Intent.ACTION_VIEW); //为Intent设置Data属性 intent.setData(uri); startActivity(intent); });

} } bn2.setOnClickListener(new OnClickListener() { public void onClick(View v) { } Intent intent = new Intent(); intent.setAction(Intent.ACTION_DIAL); String data = "tel:138xxxxxxxx"; Uri uri = Uri.parse(data); intent.setData(uri); startActivity(intent); });

相关推荐