Android studio学习笔记

Android studio学习笔记

    • 一、布局
      • 1.线性布局
      • 2.相对布局
    • 二、四大组件
      • 1.活动(Activity)
      • 2. 广播接收者(broadcastreceiver)
      • 3.服务(Service)
      • 4.内容提供者(ContentProvider)
    • 三、其它
      • 1.标题栏设计
      • 2.多线程
      • 3.handle

参考书我使用的是《Android 移动开发案例课程》刘玉红、蒲娟编。
(很多内容学习的时候没有记下来,所以内容比较简单)
具体的原理没有介绍,介绍我学习过程中用到的资料(都是链接)

一、布局

Android 布局中 如何使控件居中 - 梁文博 - 博客园
link

1.线性布局

Android的线性布局不会换行,当组件一个挨着一个地排列到头之后,剩下的组件将不会被显示出来。
LinearLayout 包含的所有子元素都受 LinearLayout.LayoutParams 控制,因此 LinearLayout包含的子元素可以额外指定如如下属性。
android:layout_gravity:指定该子元素在LinearLayout中的对齐方式。
android:layout_weight:指定该子元素在LinearLayout中所占的权重。下面我们来看看具体如何进行线性布局:
android:layout_weight的真实含义_yanzi1225627的专栏-CSDN博客 https://blog.csdn.net/yanzi1225627/article/details/24667299
1.1.在线性布局中LinearLayout设置了android:orientation="horizontal"时,表示此时的排列方式为水平方向
Android studio学习笔记_第1张图片
当在线性布局中LinearLayout设置了android:orientation="vertical"时,表示此时的排列方式为垂直方向
Android studio学习笔记_第2张图片

2.相对布局

相对布局,顾名思义是有参照的,就是以某个兄弟组件,或者父容器来决定的。(兄弟组件是在一个同一个布局里面的组件,如果是布局里一个组件参照另一个布局里的组件会出错)。
2.1.Android中RelativeLayout各个属性
android:gravity:设置容器内各个子组件的对齐方式
android:ignoreGravity:如果为哪个组件设置了这个属性的话,那么该组件不受gravity属性的影响
2.1.1设置组件相对偏移量
详解 layout_marginTop 与 layout_marginBottom_Hultron的博客-CSDN博客
https://blog.csdn.net/hultron/article/details/53067427
android:layout_margin=“10dp”
layout_margin:设置组件在布局管理器中的偏移量
layout_marginTop 指定该属性所在控件距上部最近控件的最小值;
layout_marginBottom 指定该属性所在控件距下部最近控件的最小值;
layout_marginLeft 指定该属性所在控件距左边最近控件的最小值;
layout_marginRight 指定该属性所在控件距右边最近控件的最小值。
首先,需要明确的是,RelativeLayout 是相对布局,这意味着其中的所有控件如果不进行具体的位置确定,都将汇集在左上角。
2.1.2相对于给定ID控件
Android studio学习笔记_第3张图片
android:layout_above="@id/xxx" --将控件置于给定ID控件之上
android:layout_below="@id/xxx" --将控件置于给定ID控件之下
android:layout_toLeftOf="@id/xxx" --将控件的右边缘和给定ID控件的左边缘对齐
=android:layout_toStartOf="@id/xxx"
android:layout_toRightOf="@id/xxx" --将控件的左边缘和给定ID控件的右边缘对齐
=android:layout_toEndOf="@id/xxx"

android:layout_alignLeft="@id/xxx" --将控件的左边缘和给定ID控件的左边缘对齐
android:layout_alignTop="@id/xxx" --将控件的上边缘和给定ID控件的上边缘对齐
android:layout_alignRight="@id/xxx" --将控件的右边缘和给定ID控件的右边缘对齐
android:layout_alignBottom="@id/xxx" --将控件的底边缘和给定ID控件的底边缘对齐
2.1.3.// 相对于父组件
android:layout_alignParentLeft =“true” --将控件的左边缘和父控件的左边缘对齐
android:layout_alignParentRight =“true” --将控件的右边缘和父控件的右边缘对齐
android:layout_alignParentTop =“true” --将控件的上边缘和父控件的上边缘对齐
android:layout_alignParentBottom=“true” --将控件的底边缘和父控件的底边缘对齐
android:layout_centerInParent =“true” --将控件置于父控件的中心位置
android:layout_centerHorizontal =“true” --将控件置于水平方向的中心位置(水平居中)
android:layout_centerVertical =“true” --将控件置于垂直方向的中心位置 (垂直居中)
Android studio学习笔记_第4张图片

2.1.4 padding
在安卓应用开发中,有时要用到状态按钮(可点击时与不可点击时的背景不相同),而且产品要求的按钮大小是固定的。在不同的手机上按钮的文字显示可能有些异常(主要是在给按钮做背景时很容易出现),此时我们可用padding。
padding的作用是定义控件内容与控件边界的距离(margin是定义两个控件之间的距离)
android:paddingLeft=“10dp”
padding值设置的是控件里的内容距控件边上的距离。
2)当控件里面的内容不能占据整个控件时,padding是以左上角为准设置。

二、四大组件

1.活动(Activity)

Android 活动(Activity) | 菜鸟教程 link
Android studio学习笔记_第5张图片
Android studio学习笔记_第6张图片

1.1 在重载的onCreate函数

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
  1. super.onCreate(savedInstanceState)是指调用父类的onCreate构造函数。
  2. savedInstanceState参数是保存当前Activity的状态信息。当一个Activity的生命周期结束前,会调用该方法保存状态。
  3. Bundle类型的数据与Map类型的数据相似,以key-value的形式存储数据。
    在实际应用程序的开发过程中,我们需要在一个Activity结束前保存状态,就将状态数据保存在onSaveInsanceState中,以key-value的形式放入到saveInsanceState。当一个Activity被创建时,就能从onCreate的参数saveInsanceState中获得状态数据。

Android Studio 添加另一个页面(Activity)并跳转_fengxianxp的专栏-CSDN博客:
link

1.2向应用程序上一级页面导航
应用程序图标能够向上导航,就要在你的ActionBar中调用setDisplayHomeAsUpEnabled(true)方法。
Android studio学习笔记_第7张图片

修改对应的配置清单文件,注意: 从Android4.1 (API 级别16)开始,你只需要android:parentActivityName=".MainActivity"即可,低于该版本,只需要即可。
Android studio学习笔记_第8张图片

从零开始水安卓——ActionBar_旧日灯塔-CSDN博客
link

任务栈:
Android studio学习笔记_第9张图片
在这里插入图片描述

2. 广播接收者(broadcastreceiver)

Android studio学习笔记_第10张图片
android四大组件之广播接收者(一)_吹白-CSDN博客:
link

3.服务(Service)

关于Android Service真正的完全详解,你需要知道的一切_zejian的博客-CSDN博客_android 服务
link

4.内容提供者(ContentProvider)

1.分清 URI、URL 和 URN
简单的说:www.baidu.com 是URI,www.google.com/cn,有/就是URL。
Android Uri.parse的详细资料_dpl12的博客-CSDN博客
https://blog.csdn.net/dpl12/article/details/83416320
通用资源标志符(Universal Resource Identifier, 简称"URI")。
Uri代表要操作的数据,Android上可用的每种资源 - 图像、视频片段等都可以用Uri来表示。Android平台而言,URI主要分三个部分:
scheme
authority
path
其中authority又分为host和port。格式如下:scheme://host:port/path
实际的例子:

我们很经常需要解析Uri,并从Uri中获取数据。
Android系统提供了两个用于操作Uri的工具类,分别为UriMatcher 和ContentUris 。
Android studio学习笔记_第11张图片

2.应用中的数据可以被“永久性”的存储下来,但是大多数情况下,这些数据只能被它的持有者所访问,其他应用程序无法访问和获取,要求实现跨应用的数据访问。
Android读取系统联系人权限_bingeho的博客-CSDN博客_android 读取联系人权限 https://blog.csdn.net/bingeho/article/details/86616200
android中联系人以及 ContactsContract类大全_到达的专栏-CSDN博客 https://blog.csdn.net/dq1005/article/details/47376169
安卓四大组件Content Provider_旧日灯塔-CSDN博客_安卓contentprovider
link

内容提供程序管理一组共享的应用数据。您可以将数据存储在文件系统、SQLite 数据库、网络上或您的应用可以访问的任何其他永久性存储位置。 其他应用可以通过内容提供程序查询数据,甚至修改数据(如果内容提供程序允许)。 例如,Android 系统可提供管理用户联系人信息的内容提供程序。 因此,任何具有适当权限的应用都可以查询内容提供程序的某一部分,以读取和写入有关特定人员的信息。
内容提供程序也适用于读取和写入您的应用不共享的私有数据。 例如,记事本示例应用使用内容提供程序来保存笔记。
内容提供程序作为ContentProvider的子类实现,并且必须实现让其他应用能够执行事务的一组标准 API。
可以简单的理解,ContentProvider就是实现应用间数据共享的接口。

三、其它

1.标题栏设计

1.隐藏
Android开发——去掉系统自带标题栏的几种方式_qq_28585471的博客-CSDN博客
link
1.styles.xml
Android studio学习笔记_第12张图片
Android studio学习笔记_第13张图片

2.设计

AndroidStudio的Theme、colorPrimary、colorPrimaryDark、colorAccent属性含义_努力学习的小菜鸡-CSDN博客 https://blog.csdn.net/smartzzg/article/details/104788412

安卓menu的介绍与使用 - 荒郊野岭一根葱 - 博客园
link
安卓drawable和hdpi xhdpi xxhdpi xxxhdpi 的理解_JimTrency的博客-CSDN博客
link
Android Menu用法全面讲解_已被格式化的叔叔-CSDN博客
link

2.多线程

Android多线程:实现Runnable接口 使用解析(含实例教程) - 简书
link
Android多线程:继承Thread类 使用解析(含实例教程) - 简书
link
Android 多线程:Thread理解和使用总结 - 简书
link
java、android线程extends Thread 与 implements Runnable 的区别_zhuzuofei的专栏-CSDN博客
link
Android studio学习笔记_第14张图片
特别注意:
Java中真正能创建新线程的只有Thread类对象
通过实现Runnable的方式,最终还是通过Thread类对象来创建线程
所以对于 实现了Runnable接口的类,称为 线程辅助类;Thread类才是真正的线程类

3.handle

Android消息机制原理——为什么不能在子线程更新UI?_lalallallalla的博客-CSDN博客
link
安卓基础:Handler的初识_小泽学长的博客-CSDN博客_安卓handler
link

handler.obtainMessage()理解_760720733_新浪博客
link

你可能感兴趣的:(Android,studio,java,android,studio)