da02_点击事件

  1. junit 单元测试

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

    作用

    ① server client之间传递数据

    ② 数据保存

    ③ 配置文件

<?xml version="1.0" encoding="utf-8"?>  必须在文档的第一行声明

<根元素 属性=''>

<a>

<b>

北京

</b></a>

<c/>

</根元素>

<!---->

<![cdata[]]>
*格式良好xml文档 符合xml语法

有效的  符合约束文档的要求*
  1. **

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工程目录结构

  1. src java代码

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

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

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

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

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

  7. res-> 资源目录

  8. drawable 图片

  9. layout 布局文件

    values->  dimens.xml  尺寸的声明
    
                   strings.xml 项目中用到的字符串
    
                   styles.xm 项目用到的主题和样式
    
  10. 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电话拨号器案例

  1. 画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>
    
  2. 对着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. }
  1. 部署到设备看效果
    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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值