android studio初学

请添加图片描述

资源位置

主要资源都在app文档里面
app下manifests负责整体布局
{AndroidManifest.xml里面使用**@名字**进行引用修改布局}
java负责代码编写
res负责资源的存储
{
drawable整体画布
layout具体界面布局(内容)
mimap(存储各种质量的图片)
values(存放一些资源文件的信息,用于读取文本资源,在本文件夹之中有一些约定的文件名称)
{
在一个应用中有多个控件的多个属性一样时,如果我们每一个控件都写多行相同的代码,未免太过于麻烦,这个时候我们就可以使用style资源
style支持布局文件中的所有属性,且style只对控件进行定义
主题:theme
theme也使用style来进行定义,但是注意,theme只对Activity进行定义
}
}
module 的 build.gradle {
plugins 插件表示是一个可运行程序
android 各类版本内容,向下兼容
denpedencis 依赖包(本地依赖 库依赖 远程依赖 )
}
project的build.gradle{一个依赖闭包,一个插件闭包}
Hello word 在layout的code里面
在这里插入图片描述

快捷键AS

链接: link

安卓写代码代码知识

Log.e 错误信息
Log.w 警告信息
Log.d 调试信息
Log.i 重要信息
Log.v 琐碎信息
API查询地址:链接: link.
版本选择>=23,安卓9.0为28

adb知识

1.adb connect 192.168.31.246 局域网内连接电视
2.adb shell 打开电视的脚本
3.adb install -r 替换已存在的应用程序,也就是说强制安装

版本问题

tcl 使用Android 9.0版

商汤

序列licence.lic需要放置于C:\Users\kai16.wu\Desktop\SenseSDK\SenseAsteriaMTK_9652_v0.2.2_20210330\sample\AsteriaMTK\app\src\main\assets

布局管理器

xml布局文件

在layout中,将java逻辑和界面分割开来
在逻辑代码中Activity中使用setContentView(R.layout.XXX);将xml文件中的布局内容显示。(R代表res文件夹即resource)
在这里插入图片描述按照字面意思理解即可:
FrameLayout 帧布局管理器(一帧一个控件)
LinearLayout 线性布局管理器
TableLayout 表格布局管理器
RelativeLayout 相对布局管理器
GridLayout 网格布局管理器(比较方便,基本上可以代替TableLayout)
从我的观察和思考来看,相对布局管理器用的比较多

RelativeLayout 相对布局管理器

以参考组件进行组件布局
RelativeLayout.LayoutParams提供的属性
请添加图片描述

相对布局属性详解

在这里插入图片描述
记住俩个关键字:margin(边缘) align(对齐)

LinearLayout 线性布局管理器

水平线性布局管理器
垂直线性布局管理器

帧布局管理器

请添加图片描述

布局管理器嵌套(多种布局管理器混合使用)

请添加图片描述

按钮

android:background="#0000",可以去掉按钮组件的背景,也就是背景颜色为透明,效果如下所示:
在这里插入图片描述
在这里插入图片描述
wrap_content的意思是组件尺寸大小刚好包含内容即可

Context(上下文)

上下文用this指针来代表,上下文中this的使用主要看this在上下文中指的是谁,可以是当前类,当前事件处理函数,也可以是主组件等,主要看需要哪个,有时候函数传入this,是因为需要与this指向的东西有联系。

大的组件,或者组件群使用<><>标签形式,小的组件使用<>形式

android studio会自动执行class MainActivity,不需要实例化。

安卓四大组件

活动(Activity)

活动四个状态

在这里插入图片描述

活动生命周期

在这里插入图片描述
方框中为可以回调的方法

创建Activity

在这里插入图片描述
使用activity向导创建activity可以一次配置完成,直接创捷activity会出现Java文件没有被配置的问题,以及没有对应的xml文件的问题。

启动和关闭activity

在这里插入图片描述
启动activity通过intent,在我看来将一个activity用intent对象进行存储,使用上级界面的按钮进行触发启动,也就是常见的界面切换。关闭回到上级界面则直接在当前界面使用组件监听调用finish()完成。在这里插入图片描述
在这里插入图片描述

使用Bundle在Activity之间交换数据(上级页面向下级传输数据)

bundle相当于一个传输数据的媒介,上级界面通过Intent intent=newIntent(MainActivity.this,Address.class)将下级界面保存在intent,再痛过bundle.putXXX()将数据保存在bundle里面,然后下级界面通过intent.putExtras(bundle)将bundle存在当前界面的intent对象中。下级界面使用时候,先获取intent,再通过intent.getExtras()获取bundle,获取数据之后再进行后续在组件上显示,组件在下级界面activity对应的xml布局文件中。

调用另一个Activity并返回结果(下级页面向上级传输数据)

主要是使用startActivityForResult(intent,0x007)启动下级页面的Activity,使用setResult(0x007,intent)回传下级界面的intent,用intent和bundle俩个对象存储信息,传输信息,获取信息,最终完成相应功能。

Fragment的生命周期

多个activity重用Fragment或者一个activity布局多个Fragment,activity是整个界面,Fragment在activity里面在这里插入图片描述
可以看到activity也就是大的界面没变,但是activity界面的一部分通过按钮变换,称为Fragment。
请添加图片描述

服务(Service)

定义

请添加图片描述

分类

请添加图片描述

作用

后台运行一些app

使用

请添加图片描述

生命周期

请添加图片描述
onCreate创建服务对象时运行
onStartCommand启动服务时候运行

Bound Service???

作用

用于和activity交换数据,调用方法,而不是activity作为一个触发器。

生命周期

请添加图片描述

步骤

请添加图片描述

IntentService

耗时任务,普通service会直接导致主线程阻塞,需新创建子线程运行耗时任务,但是intent Service不需要,并且可以自动开关子线程。换句话说,intentService自动创建,开关了子线程,更加方便。

请添加图片描述

内容(Content Provider)

作用

程序之间要使用数据,但是出于安全无法直接使用数据,content Provider可以实现不同程序间共享数据,同时保证被访问数据的安全。实际也就是个中间容器。

数据模型

请添加图片描述
每一行代表一条数据记录,每一列代表特定类型的数据
请添加图片描述

url

请添加图片描述
定位所有网上资源

uri

请添加图片描述
笼统定位资源,不局限于客户端和服务器

创建使用 Content Provider

请添加图片描述

提供广播接受器(Broadcast Receive)

链接: link

intent

请添加图片描述
基本上最多使用的是这三大组件来构建一个app,然后通过intent作为媒介在三者之间进行数据传输,完成功能。
请添加图片描述
显式intent
请添加图片描述
隐式intent
请添加图片描述
区别
请添加图片描述

intent过滤器

请添加图片描述
ShowActivity和MainActivity分别在manifests有一个过滤器配置文件
intent过滤器的作用就是符合的属性进行show

安卓程序调试

DDMS 现在使用Android Profiler代替DDMS

输出日志信息

编辑器调试

左侧橘色小灯泡
右侧红色叹号,小红条
断点调试,左侧点红,点击小虫子,之后和其他软件一样
实时计算变量的值:有个小计算机按钮,如下计算变量a+b的值
请添加图片描述

基于回调和基于事件监听

请添加图片描述

请添加图片描述

物理按钮

重写onKeydown方法

样式资源和主题资源

主题资源用来设置程序的最外框
样式资源用来设置程序的最外框内的组件

即便是打上一横杠类也是可以用的,只是有新的类可以替换该类

拍摄

存储

Shared Preferences

第一次登陆存储,第二次登陆读取
使用该存储实现自动登录功能
请添加图片描述
第一个参数是存储ShaedPreferences的文件名
第二个参数是指定本应用还是跨应用
请添加图片描述
请添加图片描述
存储时候put+数据类型的参数就是,第一个参数是key,第二个参数是值,存储在如下所示文件夹中请添加图片描述

请添加图片描述
getStrng的第一个参数相当于键值key,根据该key值在shared_prefs找对应的string,如果没找到则使用第二个参数的值。

内部存储

请添加图片描述
保存
请添加图片描述
读取
请添加图片描述
请添加图片描述

外部存储

读取外部存储的权限要开

保存
请添加图片描述
读取
请添加图片描述

手机使用sqLite数据库

请添加图片描述
.tables查看所有已经创建的表
其他的和一般的数据库类似

使用代码操作数据库

请添加图片描述
数据库被保存在data/com.包名/databases/表名

使用final关键字的好处

请添加图片描述

Handler

进程:请添加图片描述
线程:
请添加图片描述
线程又分为主线程和子线程,主线程可以分为多个子线程请添加图片描述

new Thread(new Runnable(){})//创建新线程
thread.start();//开启线程
请添加图片描述
子线程不允许操作主线程中的组件
解决办法:
请添加图片描述
请添加图片描述
handler只是一个消息传递机制,不一定一定会伴随着线程出现,handler可以处理message

Massage

属性:请添加图片描述
获取:请添加图片描述
例如
msg.what=0x11;//0x十六进制
if(msg.what ==0x11){}
请添加图片描述

Looper

请添加图片描述
请添加图片描述
请添加图片描述

Handler 、Looper、MessageQueue

请添加图片描述
请添加图片描述
![请添加图片描述](https://img-blog.csdnimg.cn/954a5c04f7f8489abce6f6a46a8a3f4f.png?x-oss-请添加图片描述请添加图片描述

传感器

1.通过注册传感器监听器获取传感器
2.获取传感器的数据
3.取消注册监听器

camera

请添加图片描述
打开摄像头并预览
请添加图片描述
请添加图片描述
保存照片
1.创建文件夹
2.给图片设置名称
3.根据文件夹地址和文件名称创建文件对象
4.根据文件对象创建输出流对象
5.将缓冲区(bitmap)的数据写入输出流当中

请添加图片描述
请添加图片描述
释放摄像头请添加图片描述
对于跑别人项目网络连接问题,一个是看android的sdk包版本有没有下载,一个是网络vpn,如果还不行就需要手动更新配置文件,或者点击更新配置文件的提示。本质上是网络的问题,要注意代理的配置。
gradle script是对安卓studio软件的配置,不是某一个app
打开的项目是一个project,project下面的自动生成app文件是一个modlue

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值