da02

mac2025-12-28  6

junit 单元测试

java 注解 过时的 deprecated 压制警告 supresswarnings 覆盖父类的方法 override

XML

作用

① server client之间传递数据

② 数据保存

③ 配置文件

<?xml version="1.0" encoding="utf-8"?> 必须在文档的第一行声明 <根元素 属性=''> <a> <b> 北京 </b></a> <c/> </根元素> <!----> <![cdata[]]> *格式良好xml文档 符合xml语法 有效的 符合约束文档的要求* **

xml约束文档

**

控制哪些标签可以出现 出现的次数 出现的顺序 标签的子元素的类型 哪些属性必须出现 可有可无 属性取值 是否可以重复 取值范围 dtd .dtd schema 格式 xml .xsd 对名称空间支持良好 namespace android 布局文件 配置文件 使用schema约束

xml解析

*获取工厂->获取解析器

dom 加载整个文档 树状结构 Document对象 可以修改文档sax 一个元素一个元素的解析 xmlreader 设置一个处理器 ContentHandler startDocument endDocument startElement endElement character xmlreader.parse();pull 一个元素一个元素的解析 setinput XMLPullParser.END_TAG, START_TAG START_DOCUMENT END_DOCUMENT TEXT* ①获取工厂 ②获取解析器 ③设置输入源 ④获取事件类型 int eventType = getEventType(); while(eventType != END_DOCUMENT){ switch(eventType){ getName()->获取到元素的名字 } eventType = parser.next(); } paser.next();->解析下一个元素 并且返回事件类型 json 纯移动端项目 可以传递数据 保存数据 优势节省流量 JSONObject {'key':'{}'} String int long double boolean NULL JSONObject JSONArray JSONArray[{},{}

]

1 1G~4G的介绍

G generation 代 1g 第一代无线通信技术 模拟网络 数字 信号差 不能发短信 安全性比较差 2G gsm cdma moto nokia 2017年关闭 gprs 128kbps Byte 16k 7 10k 20M symbain 3G wcdma cdma2000 3Mbps 100KB 10几倍 android iPhone iOS 硬件 电容屏 多点触控 手势操作图片浏览 语音聊天 4G 比3g又提高了10几倍 2MB/s 网络直播 视频相关 5G nokia 4g提高了10几倍 20MB/s VR AR

2 Android操作系统的介绍

1.0 artroboys 铁壁阿童木 1.0 bate 发条机器人 1.5 吃的 5.0 棒棒糖 6.0 棉花糖 7.0 牛轧糖 android市场占有率 80%

3 Android系统版本介绍

4.0以下的系统版本没必要再支持了 市场占有率低于3% 4.4 5.0_5.1 最新7.0

4 Android系统结构

5 Android虚拟机介绍

java代码运行在虚拟机中 java标准的虚拟机 jvm dalvik dvm art android runtime 替换 dalvik 4.4开始(可选的) 5.0开始 都换成了art art 把翻译的工作提前 安装的时候 直接把字节码翻译成机器码 安装之后占磁盘空间比之前大了(用空间换时间) dalvik 一边翻译一边执行

6 开发环境的搭建 ADT SDK

7 sdkManager介绍

8 模拟器的简介及创建

cpu架构 arm 公司只设计cpu 不生产具体的产品 卖授权 高通 骁龙 三星猎户座 华为 海思 联发科 mtk intel x86 atom intel加速器

9 DDMS透视图

10 Android-helloworld

11 Android工程目录结构

src java代码

gen 自动生成的 R.java 不要手动修改

Android4.3 创建项目是 指定compliesdk 用那个版本编译 最终就对导入那个android版本的jar包 Android Dependencies android的支持库 用来支持低版本的设备 使用较新的功能

assets 资产目录 这个目录里存放的文件不会被编译

bin 编译之后生成的文件都放到这个目录下

libs 项目依赖的jar包可以放到这个目录

res-> 资源目录

drawable 图片

layout 布局文件

values-> dimens.xml 尺寸的声明 strings.xml 项目中用到的字符串 styles.xm 项目用到的主题和样式

AndroidManifest.xml 清单文件

12 Android 打包过程

keystore 保存好 密码不要忘了 如果忘了 或者找不到keystore文件 只能用新的 你的应用不能覆盖升级 只能提示用户卸载

标志一个android项目的唯一性

①项目的包名

②项目的签名 keystore 文件不要丢 密码要记住 有效期要设置的时间长一些

Android Debug Bridge adb android调试桥

打包生成的文件apk

13 ADB指令练习

要在控制台使用adb需要把 sdk/platform-tools/ 这个路径加到环境变量中

adb start-server 开启adb服务 adb kill-server 杀死adb服务 adb uninstall + 包名 卸载应用 adb uninstall com.itheima.helloworld adb install + apk所在的路径 安装应用 adb install C:\Users\beibei\Desktop\1.apk adb push + pc文件路径 + android设备的路径 把电脑上的文件推到设备上 adb push C:\Users\beibei\Desktop\hello.txt sdcard/ adb pull 设备上文件的路径 pc保存文件的路径 把android设备上的文件保存到电脑上 adb pull sdcard/hello.txt C:\Users\beibei\Desktop\1.txt adb shell 可以进入到linux命令行 执行linux命令 ls 列出所有文件 cd 进入到某个文件夹 rm 删除文件 cat 显示文件内容 mkdir 创建目录 adb shell 敲exit 可以返回windows命令行

14电话拨号器案例

画UI user interface 画界面 layout->xml布局文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2. xmlns:tools="http://schemas.android.com/tools" 3. android:layout_width="match_parent" 4. android:layout_height="match_parent" 5. tools:context=".MainActivity" > 6. 7. <TextView 8. android:id="@+id/textView1" 9. android:layout_width="wrap_content" 10. android:layout_height="wrap_content" 11. android:text="请输入手机号" /> 12. 13. <EditText 14. android:id="@+id/editText1" 15. android:layout_width="wrap_content" 16. android:layout_height="wrap_content" 17. android:layout_alignParentLeft="true" 18. android:layout_below="@+id/textView1" 19. android:hint="请输入电话号码" 20. android:ems="10" > 21. 22. <requestFocus /> 23. </EditText> 24. 25. <Button 26. android:id="@+id/button1" 27. android:layout_width="wrap_content" 28. android:layout_height="wrap_content" 29. android:layout_alignParentLeft="true" 30. android:layout_below="@+id/editText1" 31. android:text="拨打此号码" /> 32. 33. </RelativeLayout>

对着UI写JAVA代码

public class MainActivity extends Activity { 2. private EditText et_text; 3. 4. // 当activty创建的时候 系统就会调用oncreate方法 5. //大部分初始化的工作都要在oncreate中进行 6. //初始化的工作包括: 调用setcontentView方法 把一个布局文件加载到屏幕上 7. //通过findviewbyId方法 把布局中要操作的控件通过代码的方式找到 8. 9. @Override 10. protected void onCreate(Bundle savedInstanceState) { 11. super.onCreate(savedInstanceState); 12. //把一个xml布局文件 画到手机屏幕上 作为这个activity的界面 13. setContentView(R.layout.activity_main); 14. //要找到输入框和按钮 15. et_text = (EditText) findViewById(R.id.editText1); 16. //找按钮 17. Button button = (Button) findViewById(R.id.button1); 18. MyonclickListener listener = new MyonclickListener(); 19. //给按钮设置点击事件 20. button.setOnClickListener(listener); 21. } 22. 23. private class MyonclickListener implements OnClickListener{ 24. 25. @Override 26. public void onClick(View v) { 27. //当按钮被点击的时候 就会走这个onclick方法 28. System.out.println("按钮被点击了"); 29. //获取用户在输入框的输入 edittext 有一个方法 getText可以获取用户的输30. String input = et_text.getText().toString(); 31. //判断输入是否为空 TextUtils.isEmpty通过这个api可以判断字符串是否为空 或者长度为0 32. if(TextUtils.isEmpty(input)){ 33. //如果为空提示用户 输入不能为空 34. System.out.println("输入内容为空"); 35. //Toast 通过这个类可以弹出提示文字 弹出吐司 makeText方法三个参数 36. //第一个参数 上下文(context) MainActivity继承activity activity是Co ntext的子类 所以直接传activity的实例就可以了 37. //第二个参数 要弹出的文字 38. //第三个参数 要显示提示文字的时长 Toast.LENGTH_LONG 或者 Toast.LEN GTH_SHORT 39. //注意调用.show方法才能显示出这个提示文字 40. Toast.makeText(MainActivity.this, "电话号码不能为空", Toast.LENGTH _LONG).show(); 41. }else{ 42. //如果不为空就调用拨打电话的应用 43. System.out.println("拨打电话::"+input); 44. //创建一个意图 告诉系统我要干什么 45. Intent intent = new Intent(); 46. //给意图添加一个动作 打电话 47. intent.setAction(Intent.ACTION_CALL); 48. //给意图携带参数 uri 统一资源标识符 电话号码 49. Uri uri = Uri.parse("tel:"+input); 50. intent.setData(uri); 51. //调用打电话的应用 52. startActivity(intent); 53. } 54. } 55. } 56. } 部署到设备看效果 activity: activity是一个组件 用户可以通过这个组件 在屏幕上跟你的应用进行交互(手机上看到的界面都是activity)

15 按钮的四种点击事件

①有名内部类 private class MyonclickListener implements OnClickListener{ - - @Override - public void onClick(View v) { - - //当控件被点击的时候就会调用这个onclick方法 - //①获取用户的输入 - String number = et_number.getText().toString(); - //②判断用户输入是否为空 - if(TextUtils.isEmpty(number)){ - //如果为空 提示用户输入内容 - //Toast.makeText 向界面输出一个短暂的提示 - //第一个参数 上下文context Activity就是一个上下文 可以传入当前activity对象 - //第二个参数 要显示的提示文字 - //第三个参数 显示提示的时间长度 Toast.LENGTH_SHORT(显示的时长较短) Toast.LENGTH_LONG(显示时间稍长) - //不要忘记要调用show()方法 显示这个Toast - Toast.makeText(MainActivity.this, "电话号码不能为空", Toast.LENGTH_SHORT).show(); - System.out.println("用户输入是空的"); - }else{ - //如果不为空 用获取的电话号码 打电话 - System.out.println("打电话:"+number); - //Intent 意图 就是对要进行的操作的抽象描述 - Intent intent = new Intent(); - //给意图设置要操作的动作 打电话的动作 ACTION_CALL - intent.setAction(Intent.ACTION_CALL); - //给意图设置要携带的数据 - //URL 统一资源定位符 http:// ftp:// https:// abc:// - //uri 统一资源标示符 可以自定义协议 url 子类父类的关系 - Uri data = Uri.parse("tel:"+number); - intent.setData(data); - //开启打电话的activity(打电话的界面) - startActivity(intent); - } - } - } ②匿名内部类 1.public class MainActivity extends Activity { 2. - private EditText et_number; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - //找到要操作的控件 - - et_number = (EditText) findViewById(R.id.editText1); - Button btn_call = (Button) findViewById(R.id.button1); - - //给按钮添加点击事件 匿名内部类 - btn_call.setOnClickListener(new OnClickListener() { - - @Override - public void onClick(View v) { - //获取用户输入 - String number = et_number.getText().toString().trim(); - //判断输入是否为空 - if(TextUtils.isEmpty(number)){ - //为空提示用户 - Toast.makeText(MainActivity.this, "输入不能为空", Toast.LENGTH_SHORT).show(); - }else{ - //不为空打电话 - Intent intent = new Intent(); - //指定动作 - intent.setAction(Intent.ACTION_CALL); - //设置数据 - intent.setData(Uri.parse("tel:"+number)); - startActivity(intent); - } - } - }); - } 37.} ③Activity实现接口 1.public class MainActivity extends Activity implements OnClickListener { 2. 3. private EditText et_number; 4. 5. @Override 6. protected void onCreate(Bundle savedInstanceState) { 7. super.onCreate(savedInstanceState); 8. // 把布局文件加载到界面上 9. setContentView(R.layout.activity_main); 10. // 找到关心的控件 11. 12. et_number = (EditText) findViewById(R.id.editText1); 13. Button btn_call = (Button) findViewById(R.id.button1); 14. Button btn2 = (Button) findViewById(R.id.button2); 15. Button btn3 = (Button) findViewById(R.id.button3); 16. btn_call.setOnClickListener(this); 17. btn2.setOnClickListener(this); 18. btn3.setOnClickListener(this); 19. } 20. 21. @Override 22. public void onClick(View v) { 23. // View v 参数 当控件被点击的时候 被点击的对象就会作为参数传进来 可以通过控件的id进行区分 24. int id = v.getId(); 25. switch (id) { 26. case R.id.button1: 27. String number = et_number.getText().toString().trim(); 28. if (TextUtils.isEmpty(number)) { 29. Toast.makeText(this, "输入不能为空", Toast.LENGTH_SHORT).show(); 30. } else { 31. Intent intent = new Intent(); 32. intent.setAction(Intent.ACTION_CALL); 33. intent.setData(Uri.parse("tel:" + number)); 34. startActivity(intent); 35. } 36. break; 37. case R.id.button2: 38. Toast.makeText(this, "按钮2被点击", Toast.LENGTH_SHORT).show(); 39. break; 40. case R.id.button3: 41. Toast.makeText(this, "按钮3被点击", Toast.LENGTH_SHORT).show(); 42. break; 43. } 44. } 45.}

第四种写法

16 Android中常用布局

Linearlayout 线性布局 RelativeLayout 相对布局 FrameLayout 帧布局 (框架布局) TableLayout (表格布局)

使用频率

RelativeLayout> LinearLayout> FrameLayout >TableLayout

17 Android中单位介绍

通过电话拨号器练习点击事件的四种写法★★★★★

最新回复(0)