- 博客(60)
- 资源 (7)
- 收藏
- 关注
原创 Android 智能语音相关知识-PCM设备
一、Audio说明Android上的应用一般都是通过AudioTrack类来播放音频,通过AudioRecord类来录制音频。AudioTrack类和AudioRecord类是Android Frameworks封装提供给应用使用的音频接口类。这些类经过层层的Binder、JNI等调用后会调用Audio HAL层提供的相关接口。这些接口实现了对音频设备、通路等一系列操作。就这样最终完成Android App和硬件的交互,实现声音的播放或者录制。我们知道,在Linux系统中,所有的设备最终都是抽象成一个或
2020-11-24 22:53:20
1721
原创 通俗易懂的并发编程-线程池
为什么要使用线程池Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。1、降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。2、提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。 如果:T1 + T3 远大于 T2,则可以采用线程池,以提高服务器性能。线程池技术正是
2020-11-13 21:42:55
248
原创 通俗易懂的并发编程-基础
启动方式1、ThreadX extend Thread 然后x.start();2、RunnableX implements Runnanle 然后把x交给Thread分析源码发现启动一个线程只有这两个方法,可能会有人有疑问了,拿callable不是也可以吗,确实我们在其他地方搜索都会说3中,其实我认为那是错误的,来上源码证明(Thread类的源码)<p>// 有两种方法可以创建新的执行线程、一种是申明类是thread的子类* There are two ways to
2020-09-06 13:18:56
310
原创 View刷新 invalidate() 、postInvalidate()、requestLayout() requestFocus()总结。
① invalidate() :请求重绘View树,即draw()过程。把例子中他是整个刷新着UI,并且从头到尾并不会触发onMeasure()方法(控制大小用)。如果是View就重绘View,如果是ViewGroup就全部重绘。一般引起invalidate()操作的函数如下:1、直接调用invalidate()方法,请求重新draw(),但只会绘制调用者本身。 2、setSelec...
2018-04-13 19:17:32
822
原创 android 7.0 使用FileProvider在应用间共享文件(相机适配)
好久没记录我的工作了,事太多了,今天刚好有点时间就捋一捋上一个项目中做的有关7.0的相机适配吧,主要是FileProvider的使用,当时主要是因为7.0手机拍照功能引出的我对FileProvider的深入,下面就记录下我是怎么适配的吧一、FileProvider概述FileProvider是我们对所有实现了IFileProvider接口的所有类型以及对应对象的统称。 总的来说,以Fil
2018-01-18 15:09:11
1406
原创 总结Android开发中必备的代码Review清单
清理操作1.页面退出时,是否完成必要的清理操作 1) 是否调用Handler的removeCallbacksAndMessages(null)来清空Handler里的消息; 2) 是否取消了还没完成的请求; 3) 在页面里注册的监听,是否反注册; 4) 假如自己用到观察者模式,是否反注册;
2017-08-21 16:38:47
500
原创 Android,App 常用图标尺寸规范
一、 程序启动图标:LDPI (Low Density Screen,120 DPI),其图标大小为 36 x 36 px。MDPI (Medium Density Screen, 160 DPI),其图标大小为 48 x 48 px。HDPI (High Density Screen, 240 DPI),其图标大小为 72 x 72 px。xhdpi (Extra-high density scr
2017-08-03 17:02:26
723
原创 简单的IPC机制学习
IPC 机制IPC场景:只有在多进程情况下才会考虑使用进程间通信。 给四大组件在AndroidMenifest中指定android:process属性来开启多线程模式使用android:process(进程)会带来的问题 1、静态成员和单例模式完全失效; 2、线程同步机制完全失效 3、SharedPreferences可靠性下降; 4、Application会多次创建; Binder的工
2017-07-28 15:28:45
814
原创 动画收集
Android 动画进阶 Lollipop - 掘金Lollipop动画 Lollipop为我们带来不少动画,简单而有效,灵活运用提升APP逼格 过渡动画 Activity过渡动画包含两部分 : Activity的进入和退出 过渡过程中的共享元素 进入和退出 explode (分解) :从屏幕中间…『Material Design入门学习笔记』动画(含demo) - 掘金之前对Material De
2017-05-17 18:41:35
608
原创 第一章、Activity 的生命周期和启动模式
Activity 的生命周期和启动模式先上一张图解析生命周期过程的一张经典图 提示: 1、configuration 当设备配置发生改变时候Activity会被重新创建 解决方法:在Activity中指定configChanges属性,常用的有locale、orientation、keyboardHidden这三个选项,还可能用到screenSize。我们只要在AndroidMenifes
2017-05-12 14:23:16
872
原创 java设计模式--单例模式
单例设计模式Singleton是一种创建型模式,指某个类采用Singleton模式,则在这个类被创建后,只可能产生一个实例供外部访问,并且提供一个全局的访问点。核心知识点如下:(1) 将采用单例设计模式的类的构造方法私有化(采用private修饰)。(2) 在其内部产生该类的实例化对象,并将其封装成private static类型。(3) 定义一个静态方法返回该类的实例。/** * 方法一 *
2017-04-20 15:00:03
518
原创 java实现冒泡排序
一、冒泡排序:利用冒泡排序对数组进行排序二、基本概念:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个
2017-04-17 16:46:07
587
原创 APP支付报错ALI40247处理方案
今天项目中突然遇到APP支付报错ALI40247,于是就总结记录了一下这个问题处理方案。下面就是APP支付报错ALI40247处理方案第一步:进入管理中心:https://openhome.alipay.com/platform/appManage.htm 第二步:选择或者创建一个应用,再选择功能信息-》申请功能-
2017-04-05 18:02:11
4822
1
原创 JAVA面试题总结
JAVA相关基础知识1、面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。2.继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象
2017-03-23 16:55:49
550
原创 详解使用LruCache来解决图片OOM的问题
LruCache 什么是LruCache? LruCache实现原理是什么?这两个问题其实可以作为一个问题来回答,知道了什么是 LruCache,就自然而然的知道 LruCache 的实现原理;Lru的全称是Least Recently Used ,近期最少使用的!所以我们可以推断出 LruCache 的实现原理:把近期最少使用的数据从缓存中移除,保留使用最频繁的数据,那具体代码要怎么实现呢
2017-03-09 17:18:06
929
原创 好用的城市选择(三级联动)
最近公司项目中用到了关于收货地址的功能,所以就根据实际情况剖析一下我做的三级联动,其实也就是我想总结一下我自己的代码了。 三级联动肯定都不陌生,因为现在很多项目中都会有应用,比如 淘宝、京东、美团、饿了么等等,这些都有,我项目中做的其实就是和淘宝的差不多当然我们都叫做仿淘宝项目。废话不多说了下面就直接上代码,根据代码来分析具体的用法,我们主要贴出来一些关键代码。 三级联动d
2017-02-27 15:43:21
2325
原创 Android 6.0运行时权限
最近研究了一下android6.0的运行时权限(公司项目需要)我开始项目中用的很乱都是直接在需要申请权限Activity页面中直接重写requestCameraPermission和onRequestPermissionsResult()方法(为了赶项目)之后都改为封装了把权限全部封装看着也爽用着更爽O(∩_∩)O哈哈~ 最后总结了以一下从 Android 6.0(API 级别 23)开
2017-01-10 18:03:56
550
原创 Android 中AIDL的使用与理解
Android 中AIDL的使用与理解 AIDL的使用:最常见的aidl的使用就是Service的跨进程通信了,那么我们就写一个Activity和Service的跨进程通信吧。 首先,我们就在AS里面新建一个aidl文件(ps:现在AS建aidl不要求和Java包名相同了):package aidl;interface IMyInterface { String getInfor(S
2016-12-27 16:16:41
472
原创 Android中图片的三级缓存(内存、文件、网络)
最近项目中图片太多起初只做了二级缓存(其实就是做了一个文件缓存)但是总感觉不够好,于是就研究了一下三级缓存并用到项目中。下面就谈谈三级缓存吧。1、为什么要使用三级缓存如今的 Android App 经常会需要网络交互,通过网络获取图片是再正常不过的事了假如每次启动的时候都从网络拉取图片的话,势必会消耗很多流量。对于非wifi用户来说,流量还是很贵的,一个很耗流量的应用,其用户数量级肯定要受到影响
2016-12-01 19:05:40
3764
原创 Android 各种屏幕截图方法
最近项目有相关的一些截图需求,经过翻阅资料也就了一些截图方法分享给大家下面就是 android截图代码 包括截取长屏(listview,scrollview等)代码在Android开发中,有时候会遇到需要截屏分享到朋友圈或者QQ,截屏有截取当前屏幕,也有需要截取不仅一个屏幕,可能会很长。 1、先给出保存图片的代码吧 // 保存到sdcard public static void saveP
2016-11-15 12:08:20
785
原创 Android架构详解
android应用开发框架是 Application Framework. 其系统架构由5部分组成,分别是:Linux Kernel、Android Runtime、Libraries、Application Framework、Applications下面将详细介绍这5个部分。自底向上分析各层。Android架构: 1、Linux Kernel Android基于Linux
2016-11-09 16:53:20
490
转载 Android 6.0 运行时权限处理
运行时权限介绍 Android 6.0在我们原有的AndroidManifest.xml声明权限的基础上, 又新增了运行时权限动态检测,以下权限都需要在运行时判断:身体传感器日历摄像头通讯录地理位置麦克风电话短信存储空间运行时权限处理 Android6.0系统默认为targetSdkVersion小于23的应用默认授予了所申请的所有权限, 所以如果你以前的APP设置的targ
2016-10-22 10:59:13
503
原创 Webview里JS跳转到Activity页面
有两种方法.第一种是通过webview提供的js和java沟通的接口进行public void addJavascriptInterface(Object object, String name) 一、然后,在javascript里可以通过name来引用到object对象里有@JavascriptInterface注解的方法Java代码 WebView wv; @Override p
2016-09-19 11:50:04
2346
原创 Android 手动显示和隐藏软键盘
1、如果输入法在窗口上已经显示,则隐藏,反之则显示InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); 2、强制显示或隐藏键盘InputMeth
2016-08-18 16:26:38
1052
原创 Android 剖析Activity管理栈
activity栈一直以来总有点不清晰的感觉,今天就彻底的梳理一下。 在android中,一个activity组件可以激活另一个activity组件(可能属于另一个应用程序)。 若新的被激活的activity组件属于另一个应用程序,则那个activity组件会运行在那个应用程序的进程中,但是从用户的角度来看,好像就是属于本应用程序一样。Android是通过将之前的act
2016-08-18 11:30:28
1129
转载 Android动画详解(二)属性动画完全解析(上)
Android系统在一开始的时候就给我们提供了两种实现动画效果的方式,逐帧动画(frame-by-frame animation)和补间动画(tweened animation)。逐帧动画的工作原理很简单,其实就是将一个完整的动画拆分成一张张单独的图片,然后再将它们连贯起
2016-08-11 12:30:25
537
原创 VideoView视频开发
Android自带了一个VideoView,用来播放视频和网络视频,它是继承SurfaceView使用MediaPlayer来做播放的类通过VideoView播放视频的步骤: 1、在界面布局文件中定义VideoView组件,或在程序中创建VideoView组件 2、调用VideoView的如下两个方法来加载指定的视频 setVidePath(String path):加
2016-08-11 11:16:25
619
原创 Android线程中消息处理(Handle,Looper)
Android中的Looper类,是用来封装消息循环和消息队列的一个类,用于在android线程中进行消息处理。handler其实可以看做是一个工具类,用来向消息队列中插入消息的。(1) Looper类用来为一个线程开启一个消息循环。 默认情况下android中新诞生的线程是没有开启消息循环的。(主线程除外,主线程系统会自动为其创建Looper对象,开启消息循环。) Looper对象通过Me
2016-06-21 18:23:26
1347
原创 Android APP的字体设置
Android系统自带有对字体的设置,这些设置是对字体的显示方式的设置,比如加粗,倾斜,下划线,字号等,但是对于字体本身,比如设置为楷体,隶书等貌似没有。Android系统只有一种默认的,如果需要修改字体,或者引用自己喜欢的字体,那么就需要自己设置或修改。 修改系统的字体可以下载修改字体的app即可,但是如果是对于开发者想在自己的app中使用具有自己个性的文字,可以按下面介绍的方法做(这里只是其中
2016-05-30 19:48:53
3533
转载 使用markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2016-05-30 19:47:25
370
原创 Android进阶之路指引
一、精深首先说一下精深,作为Android程序员,所必需掌握的基础知识: 1. Java核心编程 Android的开发语言是Java,所以Java是作为一名Android程序员所必须掌握的。 我这里推荐几本书,Think in Java(Java编程思想)、Core Java(Java核心技术)、Effective Java,看过这三本书,你的Java技术就相当有保障了。2. Android基
2016-05-11 15:44:26
630
原创 android 动画详解(一)
一、Animations介绍Animations是一个实现android UI界面动画效果的API,Animations提供了一系列的动画效果,可以进行旋转、缩放、淡入淡出等,这些效果可以应用在绝大多数的控件中。 二、Animations的分类Animations从总体上可以分为两大类: 1 . Tweened Animations:该类Animations提供了旋转、移动、伸展和淡出等效果。Al
2016-05-10 14:48:01
899
原创 WebView网页加载使用
WebView(网络视图)能加载显示网页,可以将其视为一个浏览器。它使用了WebKit渲染引擎加载显示网页,实现WebView有以下两种不同的方法: 第一种方法的步骤: 1.在要Activity中实例化WebView组件:WebView webView = new WebView(this); 2.调用WebView的loadUrl()方法,设置WevView要显示的网页: 互联网用:w
2016-04-25 14:38:20
518
原创 Android全屏模式,沉浸模式。粘性沉浸模式
1、普通全屏模式 (Fullscreen) 普通全屏模式通过设置下面的标记位实现:var uiOpts = SystemUiFlags.LayoutStable | SystemUiFlags.LayoutHideNavigation | SystemUiFlags.LayoutFullscreen | SystemUiFlags.Fullscree
2016-04-21 15:24:29
2370
原创 Git 的使用和配置
Git 常用命令git init here – 创建本地仓库(repository),将会在文件夹下创建一个 .git 文件夹,.git 文件夹里存储了所有的版本信息、标记等内容git remote add origin git@github.com:winter1991/helloworld.git – 把本地仓库和远程仓库
2016-04-19 16:22:55
398
原创 Java内存分析和总结
Java 把内存划分成两种:一种是栈内存,另一种是堆内存。在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当在一段代码块定义一个变量时,Java 就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java 会自动释放掉为该变量分配的内存空间,该内存空间可以立即被另作它用。 堆内存用来存放由 new 创建的对象和数组,在堆中分配的内存,由 Java 虚拟机的自动垃圾
2016-04-14 11:28:52
495
转载 Android适配全攻略
屏幕适配 Android适配全攻略(学习笔记总结)一、为什么要进行屏幕适配某厂商统计如下数据2012年,支持Android的设备共有3997种 2013年,支持Android的设备共有11868种 2014年,支持Android的设备共有18796种 2015年,支持Android的设备的共有24093种 http://www.sfw.cn/xinwen/471726.html(2015年
2016-04-13 18:23:07
690
原创 Android 支持表情功能
概述1.原理和实现思路2.表情图片显示3.表情面板4.表情的输入框插入和删除5.表情添加脚本Android中表情功能,一般都不是用ImageView去设置图片实现的, 表情一般会嵌套在文本之中,那么如何实现呢,这里就介绍一下其中的原理,此外还有相关功能的实现思路和具体代码1.原理和思路a.表情内容的数据格式 表情看上去是图片,但是在数据传输的时候本质上是一个特殊文本 比如QQ表情就是一个 “/
2016-03-31 10:51:04
2602
原创 优化Android Studio/Gradle构建
使用Android Studio进行开,随着项目的增大,依赖库的增多,构建速度越来越慢,现在最慢要6分钟才能build一个release的安装包,在网上查找资料,发现可以通过一些配置可以加快速度,这里跟大家分享一下。开启gradle单独的守护进程 在下面的目录下面创建gradle.properties文件: /home//.gradle/ (Linux) /Users//.gradle/ (
2016-03-31 09:33:28
557
原创 WEB前端开发书籍推荐
基础类《高效能人士的7个习惯》(推荐给所有刚刚进入职场的新人,和进入职场多年但还没看过这本书的老人。这本书会帮助你看清自己,明确今后努力的方向。)《java夜未眠》(从书名看与前端无关,但其中的内容是作者多年工作积累的心得,推荐给每一位立志从事IT工作的新人。)《网站重构》(要从事前端开发,必须要熟悉WEB标准思想。改变思想然后才能改变行动。)HTML类《精通HTML》(目前只看过这本,后续有新书会
2016-03-29 15:28:46
1714
bigimage.zip
2020-01-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人