Android基础
文章平均质量分 90
dsd2333
努力、奋进、拼搏,记住自己的目标
展开
-
View的绘制流程
一个View,从无到有会有三个流程:(measure、layout、draw)。我们都知道Android视图是由一层一层构成的层级结构,直白点说,就是父View包含子View而子View又可以包含子View。所以绘制流程是由最外层的View开始,一步一步向内传递执行。而整个过程又是递归等待的,最外层的View需要等内层所有的View执行完绘制流程才结束,因此减少布局层级,可以有效提升App性能...原创 2018-08-01 14:07:21 · 240 阅读 · 0 评论 -
Fragment生命周期过程
闲话不多说,先上图,这个图是从网上直接取材的,可能大家都看过,下面我会结合整个过程,可以和此图对应来学习。我们来简单的使用一下:1、新建一个左侧布局left_fragment.xml,代码示例如下:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orie...原创 2018-10-01 12:52:19 · 327 阅读 · 0 评论 -
Intent的四个重要属性——Action、Data、Category、Extras
Intent作为联系各Activity之间的纽带,其作用不仅仅只限于简单的数据传递。通过自带的属性,完成许多复杂的操作。例如:直接调用拨号功能、直接自动调用合适的程序打开不同类型的文件等等。Intent主要有以下四个重要属性,如下:Action:Action属性的值为一个字符串,它代表系统中已经定义了一系列常用的动作,可以通过setAction()方法或在清单文件AndroidMa...原创 2018-09-22 17:28:33 · 1427 阅读 · 0 评论 -
第一行代码学习——通知
基础知识 Tip1:通知可以在活动里创建,可以在广播接收器里面创建,也可以在服务里面创建,而相比于广播接收器和服务,在活动里创建通知的场景还是比较少的,因为一般只有当程序进入后台的时候我们才需要通知。首先熟悉一下通知的创建步骤:1、由于我们需要一个NotificationManager来管理通知,调用Context的getSystemService()方法来获取到。Notif...原创 2018-10-31 19:25:27 · 422 阅读 · 0 评论 -
Service
Service是Android中能够实现程序后台运行的方案,它适合去执行那些不需要去和用户进行交互但是还要求长期运行的任务。需要注意的是:Service不是运行在一个独立的进程当中的,而是依赖于创建Service时所在的应用程序进程,当这个应用程序被杀死时,所有依赖于该进程的服务也会停止运行。服务不会自动开启线程,默认在主线程当中。因此我们需要手动在服务的内部创建子线程,来执行具体的任务...原创 2018-11-14 15:16:02 · 162 阅读 · 0 评论 -
布局及控件
目录XML布局常用属性定义说明:线性布局LinearLayout滚动视图ScrollView相对布局RelativeLayout 帧布局FrameLayout绝对布局AbsoluteLayout表格布局TableLayout控件文本视图TextView图像视图ImageView图像按钮ImageButton 状态列表图形形状图形复选框开关...原创 2018-12-04 18:47:16 · 625 阅读 · 0 评论 -
Android系统架构
Android系统架构可分为五层,从上到下依次是应用层、应用框架层、系统运行时库层、硬件抽象层和Linux内核层 应用层 (System Apps)系统内置的应用程序以及非系统级应用程序都属于应用层,负责与用户进行交互例如: Dialer:拨号 Email:邮件 Calendar:日历 ...原创 2019-01-25 11:23:21 · 302 阅读 · 0 评论 -
RecyclerView(在后期学习过程中会持续更新)
目录RecyclerView的基本概念RecyclerView与ListView相比RecyclerView组件LayoutManagerRecyclerView.AdapterItemAnimatorRecyclerView的基本概念RecyclerView是一个新的viewGroup,它可以说是ListView的进阶版。它不仅仅局限于ListView垂直布局能力...原创 2019-01-20 20:34:21 · 166 阅读 · 0 评论 -
Activity与Fragment、Service之间的数据通信
1、Activity向Fragment传递数据?1、在Activity中创建Bundle,将数据以putString(key,value)形式放入bundle中,最后通过setArguments(bundle)方法,将其关联,在Fragment【与Activity依附的Fragment】中直接通过getArguments().getString()来获取。2、直接通过强转将其强转为Act...原创 2019-03-19 20:18:04 · 1417 阅读 · 0 评论 -
ANR分析
ANR概述 ANR(Application Not Responding)是指应用程序未响应,Android中一个Activity的执行时间是5秒,超过5秒无响应则会弹出ANR对话框,在一个广播接收者中,最长的执行时间是10秒,在这段时间内可以完成一些操作,若在10秒之内没有完成,则会造成ANR。造成ANR的主要原因 要介绍造成ANR的原因,我们首先要了解一...原创 2019-03-29 10:51:46 · 307 阅读 · 0 评论 -
Android中的多媒体开发(三)——使用Camera拍照
第一种方法就很简单啦,我们进行简单的调用系统的Camera来完成功能。代码实现: //定义一个保存图片的File变量 private File currentImageFile = null; @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR2) @Override protect...原创 2018-06-24 19:13:15 · 209 阅读 · 0 评论 -
Android中的多媒体开发(二)——使用MediaPlayer播放音频与视频
MediaPlayer支持三种不同的媒体来源: 本地资源(row文件夹下) 内部URI 外部URI播放本地资源文件夹下的音频资源: MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.sound_file_1);mediaPlayer.start();播放内部URI指定资源: Uri...原创 2018-06-22 14:43:33 · 1091 阅读 · 0 评论 -
线程同步的7种方式
为什么要使用同步呢?我们熟知JAVA中允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查)。将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程调用,从而保证了该变量的唯一性和准确性。1、同步方法有synchronized关键字修饰的方法。由于java的每个对象都有一个内置锁,当用此关键字修饰方法时,内置锁会...原创 2018-07-31 20:13:08 · 574 阅读 · 0 评论 -
Android注解
@Override就是注解,它的作用是: 检查是否正确的重写了父类中的方法。 标明代码,这是一个重写的方法。1、其作用体现于:检查子类重写的方法名是否正确,检查方法private/final/static等不能被重写。@Override对应用程序无实际影响。2、作为Android开发中熟知的注解,Override只是注解的一种体现,更多时候,注解有以下作用: ...原创 2018-07-30 22:22:59 · 198 阅读 · 0 评论 -
Android Service两种启动方式的区别
Android Service生命周期可以促使移动设备的创新,让用户体验到更优越的移动服务,只有broadcast receivers执行此方法才是激活的,当onReceiver()返回的时候,它就是非激活状态。如果没有程序停止它或者它自己停止,service将一直运行。在这种模式下,service开始调用Context.startService(),停止于Context.stopServic...原创 2018-07-29 09:18:44 · 1818 阅读 · 0 评论 -
Intent详解(二)
向下一个Activity传递参数 Bundle内部用于存放数据的实质结构是Map映射,可添加元素、删除元素,还可以判断元素是否存在。把Bundle全部打包好只需调用一次putExtras方法,把Bundle全部取出来也只需调用一次getExtras方法。 下面是前一个页面向后一个页面发送请求数据的代码: Intent inte...原创 2018-07-23 18:10:17 · 314 阅读 · 0 评论 -
Intent详解(一)
Intent,中文名为意图,简单说也就是传递消息。Intent是各个组件之间信息沟通的桥梁。既能在Activity之间沟通,又能在Activity和Service之间沟通,也能在Activity和Broadcast之间沟通。总结为:Intent用于处理Android各组件之间的通信,工作有: Intent需标明本次通信请求从哪里来、到哪里去、怎么走。 发起方携带本次...原创 2018-07-23 17:11:47 · 3946 阅读 · 0 评论 -
省市区三级联动
针对AdapterView的拓展使用,Spinner实现省市区的三级联动。其主要是通过使用Spinner的setOnItemSelectListener来实现。代码示例:activity_main.xml<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:too...原创 2018-07-17 11:55:55 · 370 阅读 · 0 评论 -
Spinner讲解
AdapterView中我们常用【常用的adapterView的使用方式都是类似的,都是通过适配器来适配数据源,然后将适配器设置到adapterView上进行显示】: ListView:滑动列表。 Spinner:下拉列表。 GridView:网格图。在这篇中我专门介绍一下Spinner: Spinner:用户选择列表,下拉列表。其内容是文本信息,常用Arra...原创 2018-07-08 15:38:21 · 3839 阅读 · 1 评论 -
AutoCompleteTextView的使用
通过AutoCompleteTextView可以:实现类似于热门提示的效果。 使用的方式类似于适配器的实现。AutoCompleteTextView的一些常用属性:android:completionHint 设置出现在下拉菜单中的提示标题 android:completionThreshold 设置用户至少输入多少个字符才会显示提示 android:dropDow...原创 2018-07-17 09:25:52 · 135 阅读 · 0 评论 -
Adapter(四)—— 自定义适配器
首先先将我们之前的ArrayAdapter和SimpleAdapter总结一下。ArrayAdapter适用在只是TextView呈现字符串的适配上,SimpleAdapter可以适配多控件。在数据源方面:ArrayAdapter的数据源是List<String> SimpleAdapter的数据源是List<Map<S...原创 2018-07-04 06:05:05 · 543 阅读 · 0 评论 -
Adapter(五)—— ListView的缓存优化
Adapter是ListView与数据之间的桥梁: ListView在开始绘制的时候,首先调用getCount(),根据其返回值得到ListView的长度,然后根据这个长度,调用getView()一行一行地绘制ListView的每一项。 当其中ListView的每一行都要显示时,都会调用Adapter的getView()方法返回一个View。 在ListView中有多...原创 2018-07-04 21:40:46 · 185 阅读 · 0 评论 -
Adapter(三)——SimpleAdapter
SimpleAdapter相对于ArrayAdapter来说更为复杂,因为其每一个列表项中含有不同的子控件。对比ArrayAdapter:1、数据源发生变化,更加的复杂。2、可以支持多控件的适配。 代码示例:MainActivity.java private ListView lv;private SimpleAdapter adapter;priva...原创 2018-07-02 10:58:20 · 1677 阅读 · 0 评论 -
Adapter(二)——ListView的点击和长按事件
相信大家对MVC模式并不陌生,那对于Adapter来说,对应为:m:model(数据模型)--------数据源v:view(显示的视图控件)--------AdapterViewc:controller(控制器)--------adapter MVC设计模式的特点:将前端显示和后端数据相互分离。ListView:Item的点击事件:setOnItemClickList...原创 2018-07-02 08:37:36 · 871 阅读 · 0 评论 -
Adapter(一)——adapter及ArrayAdapter的介绍
AdapterView和Adapter的概念: AdapterView即Adapter(适配器)控件,其内容通常是一个包含多项相同格式资源的列表,每次只显示其中的一项。 存放Adapter控件的内容的列表,在Android被称为AdapterView(适配器View ) 使用的时候一般都会先给适配器(Adapter)填充内容。然后将已经设定好的内容的适配器(Ada...原创 2018-07-01 11:23:09 · 440 阅读 · 0 评论 -
Android中的多媒体开发(四)——使用MediaRecord录音
在MediaRecord中我们会用到很多方法,下面我简单的总结一下: 方法名称 描述 public void setAudioEncoder (int audio_encoder) 设置刻录的音频编码,其值可以通过MediaRecoder内部类的MediaRecorder.AudioEncoder的几个常...原创 2018-06-25 17:03:46 · 1746 阅读 · 2 评论 -
DDMS下的data文件夹无法打开解决方案
在学习《第一行代码》第二版详解持久化技术处,在完成将数据存储到文件中后,发现在Android Service Monitor中无法访问File Explorer更无法进一步查看它的data文件夹。进行百度后了解到是Linux的权限问题。下面是我解决这个问题的方案,希望对大家有所帮助。刚开始打开File Explorer里面没有任何显示(若刚开始有显示文件夹,但存在文件夹无法打开问题的话从步...原创 2018-06-19 18:55:38 · 1090 阅读 · 0 评论 -
Android Studio 出现的Error:(26, 13) Failed to resolve: com.android.support:appcompat-v7:27.+ 报错解决方案
在使用过程中,弹出如下的错误提示,经过搜索资料以及实践,我把自己的实践过程整理一下分享出来。解决方案:第一步:打开build.gradle。第二步:将原有的release方法注释起来,替换成"repositories { maven { url "https://maven.google.com" ...原创 2018-06-20 16:59:06 · 7727 阅读 · 3 评论 -
Android中的多媒体开发(一)——使用SoundPool来播放音效
SoundPool(int maxStreams, int streamType, int srcQuality) 参数依次是:①指定支持多少个声音,SoundPool对象中允许同时存在的最大流的数量。 ②指定声音类型,流类型可以分为STREAM_VOICE_CALL(通话), STREAM_SYSTEM(系统), STREAM_RING(铃声),STREAM_MUSIC(媒体音量...原创 2018-06-22 00:52:59 · 1347 阅读 · 0 评论 -
Activity用户界面
实现有效导航 在介绍有效导航之前我们要对App bar,Fragments和多屏幕设计有一些了解。App bar 最基本的操作栏会在一侧显示 Activity 的标题。即便是这种简单的应用栏也能为用户提供有用的信息,并有助于赋予 Android 应用一致的观感。如图:图一:应用栏中显示标题 从 Android 3.0(API 级别 11)...原创 2019-04-15 13:03:31 · 2681 阅读 · 0 评论