哪些网站可以免费做推广网站建设类文章
目录
一、创建项目:
1、环境安装(idea):
下载sdk:
配置gradle
第一次运行遇到的问题:
2、 项目讲解
目录结构
gradle
budle.gradle
编辑 清单文件
Activity
写一个界面实例:
运行效果:编辑页面跳转
3:控件
文本控件-设置文本内容及大小:
文本控件-设置文本颜色:编辑
编辑视图基础-设置宽高:
视图基础-设置视图间距:
编辑视图基础-设置视图对其方式:
常用布局-线性布局(LinearLayout)
常用布局-相对布局(RelativeLayout)
常用布局-网格布局(GridLayout)
常用布局-滚动视图(ScrolView)
按钮触控-点击事件和长按事件
按钮触控-禁用与恢复
编辑 图像显示-图像视图
图像显示-图像按钮
图像显示-同时展现文本与图像
4、界面相关项目实战-计数器
1:界面设计:
编辑
5、activity:
启停活动页面
在活动页面间的消息传递
为活动补充附加信息
中级控件
图形定制
图形Drawable
形状图形
九宫格图片
状态列表图形
选择按钮
复选框CheckBox
开关按钮Switch
单选按钮RadioButton
文本输入
编辑框EditText
焦点变更监听器
文本变化监听器
对话框
提醒对话框AlertDialog
日期对话框DatePickerDialog
时间对话框TimePickerDialog
实战项目:找回密码
需求描述
界面设计
关键代码
数据存储
共享参数的用法
实现记住密码功能
数据库SQLite
SQL的基本语法
编辑
编辑 数据库管理器SQLiteDatabase
数据库SQLite
数据库帮助器SQLiteOpenHelper
优化记住密码功能
存储卡的文件操作
私有存储空间与公共存储空间
在存储卡上读写文本文件
在存储卡上读写图片文件
应用组件Application
Application的生命周期 利用Application操作全局变量 利用Room简化数据库操作
实战项目:购物车
需求描述 界面设计 关键代码
一、创建项目:
现在先在idea中new一个安卓项目:

1、环境安装(idea):
下载sdk:
安装sdk前一定要先安装jdk至少1.8以上


这里选择的是33也就是安卓13,后面可以自己选择


等待下载完成,下载完成后,进入选择项目界面,这里选择一个空项目:


点击finish进入开发界面

配置gradle
进入项目后有一个gradle配置过程,这里要换成阿里的源
首先打开gradle配置,看看我们的gradle在哪里:

我的是在这里,我们打开这个目录,在下面新建一个init.gradle文件

粘贴如下:
allprojects{repositories {def REPOSITORY_URL = 'https://maven.aliyun.com/nexus/content/groups/public/'all { ArtifactRepository repo ->def url = repo.url.toString()if ((repo instanceof MavenArtifactRepository) && (url.startsWith('https://repo1.maven.org/maven2') || url.startsWith('https://jcenter.bintray.com'))) {project.logger.lifecycle 'Repository ${repo.url} replaced by $REPOSITORY_URL .'remove repo}}maven {url REPOSITORY_URL}}
}

进入项目点击:

等待buidle完成即可 ,这里调试项目使用真机调试

第一次运行遇到的问题:
1、调试报错:
Installed Build Tools revision 33.0.0 is corrupted. Remove and install again using the SDK Manager.
这个是由于33的sdk有有错误
找到sdk目录我的在D:\adSDK\build-tools\33.0.2下面有个d8.bat改成dx.bat

找到D:\adSDK\build-tools\33.0.2\lib中的d8.jar改成dx.jar

重新点击运行成功运行:
无法安装到真机上报:
ErrorInstallation did not succeed.The application could not be installed: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED
在这里加上:
android:exported="true"(允许被其他应用打开)

安装运行成功
2、 项目讲解
目录结构

activity_main.xml是布局文件



gradle

budle.gradle




清单文件




Activity

这就是一个页面,当我们从A页面跳到B页面就会开一个新的Activity

写一个界面实例:


1、编写xml文件

2、编写java代码控制:

注册文件

运行效果:
页面跳转
首先准备两个页面文件,通过直接new activity文件,会自动注册:

这里可以看到被自动注册进来了:

在main1中加入按钮:

设计main2界面:

在第一页的java文件中添加跳转方法:

运行成功:
3:控件
文本控件-设置文本内容及大小:





dp与sp对比:
运行起来效果一样:

但是我们调整系统字体大小:
此时sp就会变大,所以sp只针对字体

文本控件-设置文本颜色:



在java中默认颜色透明,在xml中如果没有前面两位默认不透明:

还可以引用资源文件:


设置背景颜色:

视图基础-设置宽高:







视图基础-设置视图间距:


视图基础-设置视图对其方式:




常用布局-线性布局(LinearLayout)



常用布局-相对布局(RelativeLayout)


默认在左上角:







跟上级的左边对其
这样设置跟中间左边,只会飘到上面去
再设置—条跟它顶部对其

在中间右边
在中间的上面,并且左边对其
常用布局-网格布局(GridLayout)

指定两行两列:
效果:

可以使用gravity设置下级居中:
使用列权重均匀分配网格
常用布局-滚动视图(ScrolView)





按钮触控-按钮控件button


按钮绑定监听方法


按钮触控-点击事件和长按事件

点击事件推荐写法:
如果把这个类直接继承那么,这些按钮公用这个activity都会有监听功能:


长按事件:如要返回true那么分组件也会觖发长按

按钮触控-禁用与恢复

图像显示-图像视图

放一个图片:

使用图片:

在java代码中使用图片:
正常显示:

有时候图片会变大变小:

默认居中:
拉伸图片:
代码中的使用:


图像显示-图像按钮

xml中设置:

效果:
设置等比居中:


图像显示-同时展现文本与图像

设置图标在文字左边:
效果:

紫色为默认主题颜色紫色:


手动改背景色不会起作用:

修改继承的类:


设置文字间距:

4、界面相关项目实战-计数器
1:界面设计:


5、activity:
启停活动页面
启动和结束

生命周期


我们启动一下时执行顺序:
先创建活动 -》开始活动活动页面显示在屏幕上-》屏幕上可以交互


点击跳转:

到下一页:

跳转时执行顺序:
onPause当前页面暂停交互但是还是可以显示-》onStop页面不再屏幕上显示

点击返回:


点击返回到主页面:


点击跳转快速点击返回:
在跳转后立马返回,会导致我正在停止当前的一些交互,还没消失,立马又回来了,那么又可以开始建立交互了。所以这样是不会执行onStop()




无论是onPause还是onStop在内存不足的情况下,都会出现在后台被杀死的情况。从新进来的话就会重新执行onCreate()


启动模式

设置启动模式:



比如微信支付,支付宝支付,已经支付了,就不需要重复创建
比如跳转到主界面、播放视频这种耗费资源的


除了在xml中实现,还可以在java代码中动态实现:
1、首先创建两个activity






实现效果,如果没有设置的话,这里我们1->2->1->2点返回的话
就是2->1->2->1->main
但是如果我们设置了的话:
就是1->2->1->2点返回的话:
2->1->main

创建页面1


创建页面2

效果:点击跳转:

跳到成功页面点击返回:

直接退出

在活动页面间的消息传递
显示intent和隐intent



代码中的使用:
这里setComponent可以直接调用包名指定类名,而不需要知道class,常常用于调用第三方应用。
隐式类似于大家设置一个暗号,对上暗号就可以调用对应的活动:
举个打电话的例子:
界面:
效果:

java代码:

打电话效果:


如果同时intent.xxx是相同的,那么就会跳出一个选择框询问我们选择哪一个应用打开
如果我们需要被其他应用调用的话,这里我们需要做一些设置,因为默认我们是只能被主页面调用,我们需要设置可以被其他应用调用:
1、首先修改我们目标应用的xml文件:


在我们的app中设置好相应的name就可以进行跳转了 
向下一个activity发送消息

实例:把文字传到下一个活动中去
界面设计:

java代码跳转塞入数据:

第二个活动取数据:
页面2设计:

java代码:获取传递数据

演示:


向上一个activity发送消息

实例:
创建request、response界面
request:

java文件:
定义一个register可以调用callback函数进行回调:

红框内添加对response的处理:

通过regist进行跳转:

response:

java代码:
这里解析request

收到request通过setResult发送一个response回去

运行逻辑:
发送请求:

拿到消息,返回应答:

成功处理应答:

为活动补充附加信息
利用资源文件配置字符串
这样的好处就是,资源文件不需要编译,方便修改
在资源文件中定义一个string:

编写空界面:
在java代码中获取修改:

主activity修改成这个活动运行:

显示成功

利用元数据传递配置信息

使用场景:第三方sdk读取token就会从这里读取token
直接在配置清单里配置元数据:

编写一个空文件:

获取元数据:

给应用页面注册快捷方式

中级控件
图形定制
图形Drawable

使用实例:

形状图形


实例:
xml:

点击切换背景

定义矩形shape:


定义一个椭圆的shape:


默认将我们的activity设置为圆角矩形:

点击改变形状:

效果:

点击改变:




九宫格图片

状态列表图形

实例:
创建选择器:定义按下和没有按下的状态

使用,这里为了方便对比,使用一个正常的和选择器的进行对比
运行效果:


选择按钮

复选框CheckBox


自定义复选框样式:
自定义selector:
使用selector:
效果:

默认选中:

复选框事件监听:

效果:

开关按钮Switch

实例:


用于显示状态:

设置监听:

运行效果:







单选按钮RadioButton


文本输入
编辑框EditText




隐藏边框:
设置边框获取焦点失去焦点样式
聚焦shape:

失去焦点变成灰色:是下面那个aaaa,这里标错了


定义selector:

效果:













输入完就关闭输入法:

焦点变更监听器
文本变化监听器
对话框
提醒对话框AlertDialog


编辑界面:




日期对话框DatePickerDialog


日期样式:


隐藏日历:

时间对话框TimePickerDialog
实战项目:找回密码
需求描述
界面设计
关键代码
数据存储
共享参数SharedPreferences



共享参数的用法
示例:
使用:

对文件进行编辑:

演示:

查看文件已经保存成功:


获取文件:

运行即可读出:

实现记住密码功能
数据库SQLite

SQL的基本语法

数据库管理器SQLiteDatabase


数据库SQLite


界面:





数据库帮助器SQLiteOpenHelper

界面:







创建pojo:
插入:




提示工具:






数据库版本更新的时候执行:

数据库升级为2:

调用:


优化记住密码功能
存储卡的文件操作

外部空间中,自己的私有空间,卸载后就会被删除
实例:

保存sb文件:

保存目录:

读取文件:

使用外部权限:

外部空间:




私有存储空间与公共存储空间
在存储卡上读写文本文件
在存储卡上读写图片文件

创建一个活动:点保存就将图片保存到sd卡上,点读取就将图片读取出来

编写保存按钮功能:



读取图片:返回一个bitmap在前端显示


运行:
保存成功

保存路径:
![]()
点击读取:

第二种读取方式:


第三种方式

应用组件Application
Application的生命周期
我们没有指定使用的就是默认的application:

我们自己创建一个“
” 
指定我们的application


修改主activity运行:
onTerminate在生产环境中不会被调用。

使用application:
创建一个activity:
放入参数:

读取参数:
运行:

保存信息:

退出再进来是有数据的:

如果进程结束就会结束掉application:
再进去是不会加载到信息的:


每个app最大一百m
利用Application操作全局变量
利用Room简化数据库操作

在之前我们查询需要游标来确定查询位置:


添加依赖:

增加界面:

构建实体类:

编写dao层:


指定schema生成文件的地方:





实战项目:购物车
需求描述
界面设计
关键代码
内容共享
在应用之间共享数据
通过ContentProvider封装数据
使用场景:获取短信、通讯录

通过ContentResolver访问数据
首先我们创建一个客服端一个服务端:
效果:在客户端输入内容,在服务端操作数据库:

创建一个provider:


添加配置:authorities是我们的访问入口

使用之前的dbhelp创建数据库用:

获取db连接:


增加:data_path是表名:
查询:

客户端代码:
界面:
绑定按钮:

访问服务端需要用到:

封装一个url对应server的url:

点击保存直接保存到server中去:

查询:
修改配置文件

发布运行;
先发布server:
一发布provider就起来了(应用启动就创建):我们后面可以把一些配置文件写在这里(内存检查)
启动客户:点击保存:保存成功

插入执行成功:

点击读取成功:

删除:

使用内容组件获取通讯信息
运行时动态申请权限
利用ContentResolveri读写联系人
利用ContentObserver监听短信
在应用之间共享文件
使用相册图片发送彩信
借助FileProvider发送彩信
借助FileProvider安装应用
高级控件:
下拉列表
下拉列表Spinner

实例:
spinnerMode两个选择

效果:



数组适配器ArrayAdapter

编写一个条目:
tools:在代码中运行是没有的,只有在预览才有:

构建数组适配器,需要条目以及数据:

构建数组适配器:

设置适配器:

设置监听:




对话框模式:
修改成
除了可以加标题,其他都一样:

简单适配器SimpleAdapter

实例:

现在的条目需要一个imageview和一个textView









列表类视图
基本适配器BaseAdapter
条目:











效果:

列表视图ListView



条目布局:

用之前那个适配器



发布运行:每个条目之间都有分割线,点击后会变成灰色

不要分割线,间距为0,点击后透明色

增加可配置项:








创建一个activity:

条目:在原来的基础上加一个button

编写适配器:在之前的基础上加一个按钮




效果:
点击条目要弹出的话,需要关闭向下传递

网格视图GridView


实例:
设置两列:

使用之前的条目做条目:

让gridview展示条目,需要适配器:使用之前的baseAdapt:


运行效果:
翻页类视图
翻页视图ViewPager
实例:创建xml:
翻页标签栏PagerTabStrip

编辑xml:
简单的启动引导页
Fragment

碎片的静态注册
我们现在显示一个这样的界面:上面是一个fragment,下面是一个文本

静态注册上面的文本:
创建fragment:

连接创建的fragment:
效果:
fragment布局:
运行效果:
查看布局:

碎片的生命周期:

碎片的动态注册
创建viewpage:
创建动态碎片:










