19年Android初级课程笔记

Android Studio安装

  • 安装过程中或创建项目过程中,出现的问题基本都是由网络引起的,所以,保持网络畅通很重要。
  • 一般通过重试都会解决。
  • 但有一种情况比较麻烦,就是出现这种错误的情况:
    ERROR: Failed to open zip file.
    Gradle’s dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)

    它是由于下载gradle-x.x.x-all.zip不成功引起的。
    此文件在gradle-wrapper.properties中配置:
    distributionUrl=https://services.gradle.org/distributions/gradle-x.x.x-all.zip
  • 此错误的解决方案:手动下载gradle-x.x.x-all.zip,手动安装之。方法如下:
  1. 找到你的Home目录,比如 C:/Users/xiaoming;
  2. 在 $HOME/.gradle/wrapper/dists下会发现一个gradle-x.x.x-all文件夹。
  3. 把手动下载的gradle-x.x.x-all.zip文件放到gradle-x.x.x-all文件夹中的由一长串字符串组成的文件夹中;
  4. 解压gradle-x.x.x-all.zip文件,然后手动创建出两个空文件:gradle-4.10.1-all.zip.lck 和 gradle-4.10.1-all.zip.ok。

Android SDK安装

Android 工程创建

  • Android工程的管理工具是Gradle。
  • App的安装文件是apk(就是zip压缩包),它必须经过签名才能安装到用户设备上。
  • 签名是一个文件,需要用PKI工具创建。
  • 签名文件包含:你的公司或个人信息、你的公钥、数字签名(HASH码)。

Android 虚拟机配置

  • 当前仅支持Intel CPU加速,所以AMD CPU只能用真机调试App。
  • 虚拟机运行需要3个条件:1)Intel CPU;2)HAXM工具;3)BIOS里启用虚拟化支持;
  • 不同的笔记本,进入BIOS的方式不同,需要上网查,比如查“华为笔记本进BIOS”。
  • 典型错误如果项目编译无错,但启动时报告Activity无法启动,很可能是因为Android Studio开启了“Instant run”模式,可以在Android Studio的设置->Build Execution ->Instant run中uncheck 它。

Android 界面设计

  • 设置对齐时注意:控件的gravity属性决定其子控件的对齐,而layout_gravity决定其在爸爸中如何对齐;
  • 设置控件的layout_weight,可以使控件在爸爸中占据一定比例的空间;要使weight起正常作用,必须使设置layout_weight的控件的宽或高为0dp;

Layout

ConstraitLayout

  • 最强大的Layout控件,可以实现最复杂的UI设计;
  • 可以做到:子控件与容器边界对齐;设置子控件之间的对齐;子控件可以位于容器横向或纵向的某个比例位置;设置子控件在容器中的大小或所占比例;设置子控件宽高之间的比例;
  • dp是什么? 是一个物理距离单位,与分辩率无关;

ScrollView

  • 当内容超出显示区时,需要用ScrollView;
  • ScrollView只能有一个孩子,所以,一般真正的内容是放在某个Layout控件中,Layout控件作为ScrollView的孩子;
  • ScrollView必须能确定它孩子的大小,才能决定是否启用滚动;

FrameLayout

  • 它是最简单的Layout控件;
  • 它的孩子们之间无法设置相对关系,所以它其实相当于没有排版功能;
  • 它的孩子可以相互覆盖;
  • 它有自己的用途:比如实现翻页效果或抽屉效果;

LinearLayout

  • 是一个比较简单的Layout控件;
  • 它的孩子们并排排列;

Android资源

  • 代码之外的文件都是资源;
  • 所有资源放在res文件夹下;
  • res又分不同的资源类型,每种类型有一个文件夹对应;

代码操作UI

  • 在代码中,一般用findViewById()取得控件对象;
  • R是一个类,它是Gradle分析资源文件后自动产生的,它里面主要包含了与资源相关的各种常量,它是不能被改动的;
  • 响应View的事件,要为View设置侦听器对象,最方便的方式是使用Lamda语法;
  • Lamda表达式出现的主要目的是简化书写代码量,注意,需要设置Module的源码兼容java8语法;
  • 在UI上显示提示信息,可以使用两个类:Snackbar和Toast,Snackbar是新来者,我们一般应使用Snackbar;
  • Activity的onCreate()方法,是在Activity被创建后但未显示前调用,所以,我们可以在此方法中加载Activity的界面;

Activity导航

  • 就是页面切换;
  • 启动Activity,使用startActivity()方法。
  • 注意!我们不能new一个Activity实例,而必须请求系统帮我们创建,因为系统需要管理Activity复杂的生命周期;
  • 如果在一个Activity关闭时,获取它里面的数据? 这涉及两方面:一是要关闭的Activity必须主动返回数据;二是要回到的Activity必须有办法获取它返回的数据;
  • 关闭当前的Activity,需调用方法finish(),相当于自杀;
  • 向启动我的Activity返回数据,使用方法setResult();
  • Intent 是意图的意思,代表一个请求,启动Activity时,需要使用它,在Activity之间传递数据,也需要用它;

Fragment

  • 它是界面的容器,它可以在某种程度上代替Activity;
  • 它离不Activity,没有Activity,它不会显示;
  • 要把Fragment放在Activity中,必须有一个Layout控件作容器;
  • Fragment的使用:1)在Layout资源文件中定义,但注意,要在Fragment元素中指明它的类;2)利用代码动态添加Fragment;
  • 可以使用FragmentManager类动态地添加、删除、修改Fragment,注意它是事务操作;
  • Fragment中,在界面显示之前响应UI事件等操作一般在onViewCreated()中进行;
  • Fragment的页面返回,可以利用后退栈实现;向后退栈中加入的是操作,而不是Fragment,于是再Pop栈时,那个操作就反向执行;加入后退栈的操作所涉及的Fragment,都不会销毁;
  • 如何在Fragment间传递数据:通过Fragment的方法setArguments()向它传递数据;它的参数是Bundle,它与Map相似,数据是以key-value的形式保存,也与Intent中的数据保存方式相似;取传入数据的方式是:getArguments()。
  • Fragment的生命周期:
    在这里插入图片描述

Menu

  • Activity默认有一个OptionsMenu(选项菜单)
  • 一个Activity只有一个选项菜单;
  • 响应选项菜单项的选择,需重写方法onOptionsItemSelected()

对话框

  • 对话框对象,需要使用一个Fragment包装,这个Fragment必须从DialogFragment派生;
  • 需要重写DialogFragment中的方法:onCreateDialog(),在这个方法中创建并返回Dialog对象;

动画

  • 从API的使用角度可分成三种动画:View动画,属性动画、Drawable动画;
  • 动画组:AnimationSet,通过它可以把多个动画进行统一管理,对于使用者来说,它就像一个Animation对象;

RecyclerView

  • Android前期提供了一个叫ListView的控件,用于显示列表,已被RecyclerView替代;
  • RecyclerView可以定制其条目的排版方式,现支持两种:列表和Grid;
  • RecyclerView符合MVC架构,RecyclerView本身不保存各条目数据,要访问这些数据,需要使用Adapter(适配器);
  • Adapter是用于关联View与数据的组件,也正是它,把View与数据隔离;
  • RecyclerView使用方式:1)创建Adapter的子类,2)实现Adpater中的回调方法,3)创建RecyclerView对象,4)为它设置Adapter,5)为它设置LayoutManager;
  • ViewHolder的作用:1)在初始化时保存下Item对应的View中的子View,避免后面绑定时再次find树;
  • 添加一条:先向后台集合中添加一条;再通知View刷新数据,通知是以Adapter发出的。

Service

  • Android 四大组件之一。
  • 专用于后台处理,它没有界面,它能保证不包含可见Activity的进程在后台长期存活。
  • Service在系统中是单例,不论start或bind几次,它只有一个实例。
  • Service有本地Service和远程Service之分,本地Service与启动它的Activity处于同一进程的同一线程内,也就是说,此种Servcie在UI线程中运行,要在service中执行耗时的操作,应该开后台线程。
  • 生命周期:
    在这里插入图片描述

ContentProvier

  • 内容提供者:ContentProvider,是Android中的四大组件之一。它用于在各组件和App之间共享数据;它并不是一种数据存储方式,它的主要工作是将某些数据以关系型数据库表的形式提供给访问者。
  • 要想通过内容提供者获取数据,需要使用内容解决器-ContentResolver。
  • 内容以提供者要求以Uri是形式指向要访问的内容比如:content://xxxxxxxxx/aa/bb

多媒体

  • 音视频播放使用MediaPlayer;
  • 音视频录制使用MediaRecoder;
  • 播放过程:创建MediaPlayer实例-设置StreamType-设置数据源-prepare准备-start/stop/pause-Release释放资源;
  • 可以侦听异步准备事件、播放时间更新事件等。

使用LinearLayout实现组件垂直排列,在xml中应添加android:orientation=vertical属性进行设置

Android虚拟机加速工具是HAXM

SAX解析xml文件的优点的是不用事先调入整个文档,占用资源少

适配器主要用来把数据绑定到组件上

Linux不是使用Java语言编写,Android的Linux内核层也不是用Java语言编写

Android虚拟机加速工具是?

List类可以存储重复元素

Shared Preferences属于Android的本地存储方式

Activity通过onCreate()方法进行初始化操作

SharedPreference适合小数据量的存储,文件方式大数据小数据存储都适合

Intent传递数据时,File数据类型不可以被传递

SharedPreference适合小数据量的存储

在Android应用程序中,图片不应放在res/raw目录下

在四大组件之间传递数据时,Bundle常被用来封装数据

Android工程下面的assets目录主要放置一些文件资源,这些文件会被原封不动打包到apk里

在ImageSwitcher中实现ViewSwitcher.ViewFactory接口后需要重写的最重要的方法是makeView

在Android应用程序中,图片应放在_drawable 目录下。

Android支持两种动画,分别是逐祯动画和补间动画。

给ListView设置适配器的方法是setAdapter 。

Android的四大组件是:Activity 、Service 、BroadcastReceiver、ContentProvide 。

帧布局FrameLayout继承自ViewGroupe类。

res/raw目录的文件原封不动的存储到设备上不会转换为二进制的格式。

在排版中,用于设置控件宽度的layout属性是layout_width。

android:hint属性可做EditText编辑框的提示信息

如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态。

Service的生命周期

Android的四大组件,各自都有什么作用

Android平台手机5大优势

Touch事件的传递机制

View, SurfaceView, GLSurfaceView的区别

Android平台提供了哪些数据存储方法。

Android中的动画有哪几类,其特点和区别。

使用文件读取用户名和密码的代码实现。(假设使用换行符对用户名和密码进行分隔)

Activity中保存在ArrayList中的数据显示在RecyclerView中,Adapter类的写法

能进行mp3音乐文件的播放的Activity类的源码

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值