该笔记主要是通过学习《第一行代码》中的各种知识点以及实例,进行的个人学习记录,感谢图书作者郭霖大神

android:label 指定活动中标题栏的内容,标题栏是显示在活动最 顶部的* 标题栏隐藏 ——在onCreate中使用 requestWindowFeature(Window.FEATURE_NO_TITLE)的意思就是不在活动中显示标题栏,注意这句代码一定要在 setContentView()之前执行Activity生命周期,结束当前活动用finish

新学控件

AlertDialog(主要属性:标题Title,内容Message,按钮事件positive/negative,是否可以返回Cancelable)需要代码中用show显示到屏幕

ProgressBar(主要属性:圆形或长条style,进度值max,可见性visible)不需要代码中用show显示到屏幕

ProgressDialog与AlertDialog相似,但是xuyongD调用dismiss关闭

布局复习 * LinearLayout(2个重要属性)

layout_gravity 根据LinearLayout的水平/垂直属性,再决定控件的垂直/水平位置

layout_weight 可以去除layout_width的依赖,规范做法是将控件的width设置为0dp,然后对控件的layout_weigth设置即可,当然也可以width weight一起使用在不同控件中

RelativeLayout

主要是align为前缀的属性,相对位置可以是相对于父控件的位置,也可以是同级控件的位置,主要有这些:alignParentLeft/Right/Bottom,centerInParent,align_toRightOf/toLeftOf/below/above

FrameLayout

只是将所有控件放置在布局左上角,在讨论碎片时将使用到,其他情形下很少用

TableLayout

使用表格的方式排列控件,主要是行列的设置,通常对不同行,列数不同时,通过合并单元格的方式解决

TableLayout中每个TableRow代表一行。TableRow中每加一个控件,就是添加一列。使用属性layout_span=2,可以合并2列,这样就对齐了。为了填补一行的其余空白位置,使用strechColumns属性,将某个行内控件拉伸自适应屏幕。strechColumns = 0表示拉伸从左往右的第0个控件

引入布局到其他布局,自定义控件

在需要引入的布局文件中添加即可将目标布局放入其中

自定义控件的一个优点是,避免在其他代码中重复实现布局中控件的某些功能 * 单位问题 > px表示像素,pt用于文字大小的表示

android中的对应单位按比例可以适用于不同的屏幕dpi,dp=dip(px的升级版),sp(pt的升级版,用于文字大小配置)

聊天功能的界面实现

首先需要用sdk自带的drawPatch将图片配置成拉伸合理的素材图片

基本由一个listview,一个textview和一个button组成,需要注意的是“如何自动更新信息同时看到最新发出或收到的信息”,对listview进行实时更新——利用适配器所带函数notifyDataChanged()通知listview数据产生变化,使用listView的setSelection(dataCollection.size)函数,将显示的数据定位到最后一行

Fragment(总是依附activity存在)

不同一般控件,它的添加需要一般控件作为内容,同时需要一个java类完成fragment控件的自定义绘制,因此接下的学习才能体会到fragment具有类似自定义控件的性质

生命周期

运行,暂停,停止,销毁

进入停止状态的所有fragment都是不可见的,使用addtoBackStack能够使fragment进入停止,但也可能被系统回收 * 静态加载fragment

首先需要针对每一个fragment设置f.xml布局文件,之后再对应fragment布局文件对应新建Fragment类F.java > * 该Fragment类继承自android.app.Fragment,重写onCreateView方法,在方法中通过调用LayoutInflate.inflate方法将定义的fragment布局文件f.xml作为参数传递进来,相当于类与布局的绑定,在个人看来这种做法与自定义控件十分相似

最后,在需要加载fragment控件的主xml中,用以下代码方式将fragment加载入主xml的布局中加以显示,需要留意的是android.name属性,必须对控件fragment的该属性指定包名+类名才能够找到并加载对应的fragment布局对象

android:id="@+id/fragment"

android:layout_width="match_parent"

android:name="com.example.young.***"

android:layout_height="match_parent" />

动态加载fragment

必要步骤与静态加载相同,新建f.xml并新建F.java

在需要动态加载/替换不同fragment的位置,添加 FrameLayout 标签,因为该标签特性是所有控件都覆盖在左上角,这样就使得新加载的控件能够覆盖之前的控件,达到替换不同fragment的作用,演示代码如下:

android:id="@+id/right_layout"

android:layout_width="0dp"

android:layout_height="match_parent"

android:layout_weight="1">

android:id="@+id/right_fragment"

android:layout_width="match_parent"

android:name="包名+fragment类名"

android:layout_height="match_parent" />

```

> * 动态加载说明需要根据输入来改变界面显示,因此使用一个按钮点击按钮的方式替换加载不同fragment作为实例,说明如何动态加载fragment,具体只需要在button的监听事件中编写fragment相关逻辑

```java

button.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

AnotherRightFragment fragment = new AnotherRightFragment();

FragmentManager fragmentManager = getFragmentManager();

FragmentTransaction transaction =

fragmentManager.beginTransaction();

transaction.replace(R.id.right_layout, fragment);

transaction.addToBackStack(null);

transaction.commit();

}

});

分析动态加载过程,使用到的对象有:fragment布局对应的类实例fragment,FragmentmanagerFragmentTransaction 需要先得到一个新fragment实例(目的是用于之后的加载),然后得到FragmentManager实例(Activity中可直接调用getFragmentManager()获取),之后的操作就是利用manager开始一次事物操作,manager实例调用beginTransaction()得到一个事物transaction实例对象(个人感觉该操作类似数据库一次事物),通过transaction进行需要的操作(replace,remove等),记得需要提交conmmit。这里提交之前的一句addToBackStack(null)是为了保存懂动态加载之前的一个状态,模拟activity返回栈的操作,使得动态加载之后,点击back键就能返回上一次的状态,而不是直接退出(这一步经过实践并没实现预期结果,还未找到问题暂时搁置)

Bundle对象实例,可用于保存恢复某些数据(2.4.5 小节)

Bundle对象能够保存多种对象,例如bundle.putString(String key,String value),bundle.putInt(String key,int value),在内存不足可能回收停止状态的活动时,重写onSaveInstanceState(Bundle bundle)能够将数据保存在bundle中,再次启动活动时,通过onCreate的Bundle参数获取相关数据

Bundle可以通过intent在不同活动中传递,将数据保存在Bundle中,再将Bundle保存在intent中传递也是一种传递数据的方式

限定符(作用是自动判定该如何显示fragment,双页还是单页显示)

新建不同大小的适配的文件夹(这里有统一的格式规定),例如在res目录下新建layout-large文件夹(用于适配双页)放置显示双页格式的布局xml文件

最小限定符(Smallest-width Qualifier):灵活适配不同宽度大小的屏幕,单位是dp,举例layout-sw600dp表示屏幕宽度大于600dp的时候就使用该文件夹中的布局xml文件,小于就适配其他布局文件(该功能由Android 3.2 引入)

android入门知识,android基础知识学习笔记相关推荐

  1. 可能是最详细的Android图片压缩原理分析(一)—— Android图片压缩必备基础知识

    本篇文章已授权微信公众号guolin_blog(郭霖)独家发布 稀土掘金链接 前言: 最近在研究图片压缩原理,看了大量资料,从上层尺寸压缩.质量压缩原理到下层的哈夫曼压缩,走成华大道,然后去二仙桥,全 ...

  2. Android camera(4)---Android Camera开发之基础知识篇

    Android Camera开发之基础知识篇 转自:https://blog.csdn.net/feiduclear_up/article/details/51968975#jump5 概述 Andr ...

  3. Android自定义view之基础知识

    Android自定义view之基础知识 虽然Android已经自带了很多实用的view和layout,加以调教能实现很美观的界面,但是有一些情况下,需要实现特殊的界面效果,比如我们比较熟悉的各种播放器 ...

  4. Android DRM框架与基础知识

    Android DRM框架与基础知识 Android DRM框架 DRM框架的目的:能让安卓设备可以播放更多的内容,不同的内容和硬件设备可能使用的是不同的内容版权保护机制或者没有版权管理机制,但是安卓 ...

  5. Android ble连接过程,Android BLE的一些基础知识及相关操作流程 - 全文

    前言: 本文主要描述Android BLE的一些基础知识及相关操作流程,不牵扯具体的业务实现,其中提供了针对广播包及响应包的解析思路,希望对正在或即将面临Android BLE开发的伙伴们有所引导. ...

  6. 小白入门!网络安全基础知识详解(附知识问答)

    小白入门!网络安全基础知识详解(附知识问答) 一.引论 提到网络安全,一般人们将它看作是信息安全的一个分支,信息安全是更加广义的一个概念:防止对知识.事实.数据或能力非授权使用.误用.篡改或拒绝使用所 ...

  7. python向量计算库教程_NumPy库入门教程:基础知识总结

    原标题:NumPy库入门教程:基础知识总结 视学算法 | 作者 知乎专栏 | 来源 numpy可以说是 Python运用于人工智能和科学计算的一个重要基础,近段时间恰好学习了numpy,pandas, ...

  8. 斯坦福大学CS520知识图谱系列课程学习笔记:第二讲如何构建知识图谱

    上一讲我们学习了知识图谱的一些基本概念: 斯坦福大学CS520知识图谱系列课程学习笔记:第一讲什么是知识图谱 本节课程关于如何构建知识图谱,因为知识图谱的构建是整个知识图谱领域的一个非常核心且基础的工 ...

  9. oracle 方泽宇_斯坦福大学CS520知识图谱系列课程学习笔记:第二讲如何构建知识图谱...

    上一讲我们学习了知识图谱的一些基本概念:泽宇:斯坦福大学CS520知识图谱系列课程学习笔记:第一讲什么是知识图谱​zhuanlan.zhihu.com 本节课程关于如何构建知识图谱,因为知识图谱的构建 ...

  10. 深入了解计算机基础,计算机入门《计算机基础知识》(全16集)

    计算机入门<计算机基础知识>是一套比较经典的老教程,里面个别章节有些过时,但是原的东西讲的很好永不过时,对于想了解电脑.计算机的初学者是很好的教程,课程讲的十分详细.深入浅出,相对于< ...

最新文章

  1. 2021-2028年中国阻燃装饰行业市场需求与投资规划分析报告
  2. mysql存储过程与自定义函数
  3. 提升磁盘IO性能的几个技巧
  4. python编程工具p-这里有123个黑客必备的Python工具!
  5. Docker(swarm mode)在一段时间不用后无法启动
  6. SpringMVC传递JSON数据的方法
  7. 设计模式(五)学习----装饰模式
  8. springboot中Word转PDF技巧
  9. PowerDesigner 反向工程获取数据库表结构
  10. 5G 核心网 Quality of Service Model (QoS Model)
  11. IntelliJ IDEA 在使用manven后的纠结(每次修改代码都要重启tomcat才能看效果吗?),请各位大侠来看看问题
  12. 电子计算器按键的功能
  13. 产品隐私政策与使用条款
  14. 【长按图片识别】uniapp vue开发时,点击图片识别—实现转发、收藏、识别图片二维码
  15. 将自己的网站(html页面)做成链接分享给他人(建议使用vercel)
  16. 【Vue】组件间传值的三种方式:父传子,子传父,非父子传值
  17. R语言统计—频数统计
  18. 云呐|机房动环一体机综合监控管理
  19. Limited Data Rolling Bearing Fault Diagnosis With Few-Shot Learning(基于小样本学习的有限数据滚动轴承故障诊断)
  20. 计网 ---实例二:实验楼

热门文章

  1. mysql粘贴数据_Navicat 如何复制粘贴数据
  2. c:forEach, c:forTokens 标签
  3. django定义模型类-14
  4. Vue(二十一)使用express模拟接口数据
  5. 026-微软Ajax异步组件
  6. 【会议记录】第二次例会(10.06)记录
  7. 牛客网(剑指offer) 第十三题 调整数组顺序使奇数位于偶数前面
  8. PowerShell渗透工具Nishang
  9. 【python数据挖掘课程】二十五.Matplotlib绘制带主题及聚类类标的散点图
  10. 2013\National _C_C++_A\5.网络寻路