
Android
文章平均质量分 78
落叶Ex
定个小目标 比如 先活他个五百年
展开
-
Glide setDefaultRequestOptions 源码分析
Glide源码分析一、现状以下为一次Glide图片加载典型用法,会将所需相关配置写入 requestOptions 对象,通过 setDefaultRequestOptions 方法写入自定义配置。 RequestOptions requestOptions = RequestOptions.skipMemoryCacheOf(true).diskCacheStrategy(DiskCacheStrategy.NONE).d原创 2022-04-25 14:42:42 · 869 阅读 · 0 评论 -
关于Glide加载图片自动转circleCrop问题
遇到一个很灵异的现象,记录。开发中遇到使用Glide加载图片,本来矩形图片加载为圆形。以下为代码:fun ImageView.load(path: Any) { if (path is Int) { this.setImageResource(path) return } Glide.with(context) .load(path) .dontAnimate() .diskCacheStrategy原创 2021-09-14 15:31:43 · 921 阅读 · 2 评论 -
基于WebRTC搭建直播平台
基于WebRTC搭建直播平台 直播可以说是近年来最火的互联网项目,各大直播平台如雨后春笋般先后兴起,转眼间主播这一行业也成为最赚钱的代名词。那我们就来从0开始搭建一个直播平台吧。WebRTCWebRTC,名称源自网页实时通信(Web Real-Time Communication)。是一个支持网页浏览器进行实时语音对话或视频对话的技术,谷歌于2010年收购获得。2011年5月...原创 2018-03-30 17:50:06 · 13975 阅读 · 7 评论 -
Android使用Jdbc连接远程数据库
Android使用Jdbc连接远程数据库 众所周知,Android是基于Java进行编写,并且其核心类库中也包含了大部分JDK的类库。因此理论上Java能实现的功能在Android上都是可行的。其中就包括了调用服务器端数据库。导包在AS上gradle能帮助我们轻松完成导包的工作。至于包的来源可以在mavan仓库进行检索。 implementation group: ...原创 2018-03-30 11:13:24 · 1677 阅读 · 0 评论 -
Android6.0运行时权限请求
Android权限请求Android在SDK23(Android 6.0)之后将权限作了区分,一种是普通权限,一种是6.0权限也就是危险权限。普通权限和之前的没有什么区别,而危险权限除了需要在Manifest中进行声明外还需要在运行时进行手动申请,只有在申请后用户同意了才能使用该权限。权限版本兼容手机版本<23 & targetSdkVersion&原创 2017-10-11 10:29:33 · 426 阅读 · 0 评论 -
Android简单接入Vitamio
Android简单接入Vitamio 说到第三方视频播放控件,真正意义上好用的就那么几家,这里之所以要说真正意义上是因为市面上存在一部分三方视频播放器是基于原生的VideoView封装而来的,并不是说原生的不好,而是原生支持的视频格式实在是很有限,而且在线播放也是一个短板。写在前面在很早之前就有接触过Vitamio这款播放器,当时觉得很容易就没有过多的注意,最近又重新开始使用原创 2018-01-12 16:21:25 · 2253 阅读 · 2 评论 -
Android强、软、弱、虚引用
Android软、弱、虚引用 相对于C/C++,Java不需要程序员自己管理内存的分配和回收,这些相关的内存操作都交给了GC(Gabage Collection)进行管理。按我们今天的理解来说,GC就像一个AI机器人,它会不定时的扫描当前内存,并且释放掉不必要的,那它是如何判断出哪些需要回收的呢。这里就引入了Java引用机制,根据引用强弱不同分为了强、软、弱、虚四个引用等级。GC会参照这个等级进原创 2017-12-07 09:36:23 · 594 阅读 · 0 评论 -
Android拍照录像框架Camera2使用简介
Camera2框架使用简介 在Android 21时Google更新了以往的摄像头类库Camera,取而代之的是Camera2。作为更新版本,Camera2具有更强功能的同时也增加了我们使用的困难性。核心类CameraManager:作为整个框架的入口,用于初始化其他类,本身意义不大,使用也很简单。CameraCharacteristics:通过CameraManager...原创 2018-05-16 16:40:45 · 2639 阅读 · 0 评论 -
Android后台保活套路分析
Android后台保活套路分析原文作者:D_clock爱吃葱花链接:https://www.jianshu.com/p/63aafe3c12af來源:简书基于个人理解进行了部分删减补充保活手段当前业界的Android进程保活手段主要分为 黑、白、灰 三种,其大致的实现思路如下:黑色保活:不同的app进程,用广播相互唤醒(包括利用系统提供的广播进行唤醒)白色保活:启动前台Serv...转载 2018-10-15 14:16:09 · 2829 阅读 · 1 评论 -
Android 各版本新特性介绍
Android 各版本新特性介绍5.0~9.0Lollipop 5.0/5.1Welcome to Android 5.0 Lollipop—the largest and most ambitious release for Android yet!欢迎使用Android 5.0 Lollipop - Android史上最大,最雄心勃勃的版本!Material designMate...原创 2018-10-15 17:22:55 · 4148 阅读 · 0 评论 -
Android存储权限之深入浅出
Android文件存储及权限解析Android中常见的存储方式有SharedPreferences、Sqlite、文件IO存储、云存储、ContentProvider等。其中IO存储最为灵活,适用场景也多。这里就不同文件路径和其对应的权限进行分析。Android系统分区首先我们需要知道Android的系统分区结构,熟悉Android系统和刷机爱好者应该知道,Android中主要分为以下...原创 2018-10-09 16:20:29 · 6100 阅读 · 1 评论 -
快速读懂 Fragment 与 Activity 的关系
Fragment 和 Activity 关联源码梳理文章目录Fragment 和 Activity 关联源码梳理FragmentActivityFragmentControllerFragmentContainerFragmentHostCallbackFragmentManagerFragmentTransationFragmentActivity继承自Activity,支持 suppor...原创 2019-04-23 17:44:09 · 978 阅读 · 0 评论 -
Android 列表曝光数据统计全面解析
列表曝光统计开发越往后走,越发觉察到数据的宝贵,所谓量变产生质变,即便是一些平时看上去无足轻重的数据一旦量上去了加以分析也会是一比巨大的财富。文章目录列表曝光统计需求整理曝光统计思路分析列表控件曝光项获取曝光时机架构设计实现内部实现外部实现结语列表可以说是当下互联网产品中最最最常见的呈现形式了,几乎所有内容都可以用列表的方式进行展示,同时也是最好的方式没有之一。当一个产品规模到达一定量...原创 2019-06-13 16:30:27 · 3277 阅读 · 0 评论 -
Android AIDL 入门
声明 AIDL 接口。创建多进程服务并实现 AIDL 接口。绑定服务,通过 AIDL 生成的 Binder 实例进行多进程交互。而这其中的难点其实也就是集中在系统编译 AIDL 之后,为我们自动实现的 Binder 那部分逻辑里面了,但这部分逻辑其实不用太过深究也能满足大部分的操作,想自己基于 Binder 实现跨进程交互的童鞋可以研究下这部分源码,本篇文章由于侧重点不同便不作解析。原创 2019-08-01 16:51:17 · 617 阅读 · 1 评论 -
了解 Binder 看这一篇就够了
Binder一. 前言笔者一直坚信,在不介绍上下文的情况下直入主题就是在耍流氓,只有建立好完善的知识体系后才能更好的理解和记忆相关内容。因此在介绍Binder之前,先来梳理一下大致的脉络。二. 进程和IPC2.1 进程在 Android 中,可以简单的把进程看作是 JVM 虚拟机,每个进程就是一个独立的虚拟机,它拥有自己特定的资源,例如内存空间。多个进程之间的内存是不共享的,就像平行世界...原创 2019-08-26 14:03:12 · 1492 阅读 · 1 评论 -
Android 笔记之屏幕显示
Android 笔记之屏幕显示横竖屏Manifest 在Manife中对Activity设置android:screenOrientation可以控制当前Activity的横竖屏显示样式。代码 在BaseActivity中通过如下代码可以为所有继承了BaseActivity的子类设置屏幕显示方式。注意需要在onCreate()的super()之前调用。 requestedOrienta原创 2017-10-23 17:50:03 · 260 阅读 · 0 评论 -
Android资源限定符
资源限定符使用Android编程不可避免的需要进行应用适配,大多数情况可以通过dp/sp等自动换算单位以及动态计算等策略实现,但是当遇到一些要求比较复杂的适配时就显得力不从心了,这样就需要用到限定符。其实我们平常开发中默认就用到了限定符,例如:drawable、drawable-xhdpi、drawable-xxhdpi等,-后面的就是所谓的限定符,通过指定xhdpi、xxhdpi针对设备分辨率对资原创 2017-10-11 10:09:22 · 725 阅读 · 0 评论 -
Android 触摸事件传递
近期项目涉及到了大量的手势操作,对Android手势监听也有了更加全面和深入的了解。这里大致的说一下来方便自己和大家理解流程。具体太官方的解释和详情就不多赘述了,从我的个人实际体会来说。会说的比较直接。首先基本上所有View都是通过一个方法来响应监听事件,public boolean onTouchEvent(MotionEvent event) ;只要是Android手势操作像一原创 2017-01-21 17:41:15 · 1493 阅读 · 1 评论 -
Android笔记之系统软键盘布局
对于触屏手机软键盘是正常使用中不可或缺的一样东西,在Android编程时经常会遇到一些软键盘方面的文字,经过本人实践总结,把有关的坑写在下面。Android为了让用户在软键盘弹出后能显示出文本编辑框(也就是EditView),会默认判断如果键盘弹出后会遮挡编辑框便让界面布局挤压,将编辑框强行顶在软键盘上方,这样对于用户体验来说是挺好的,但是对于一些复杂的界面,经常会出现很多问题。这里我们便需要原创 2017-02-22 15:52:57 · 862 阅读 · 0 评论 -
Android Bitmap优化
开发中经常需要使用Bitmap进行位图显示,由于现在手机像素的提升,直接频繁显示原图会消耗大量的内存,很容易造成OOM,因此我们需要对Bitmap进行压缩处理。首先在通过BitmapFactory创建Bitmap时可以发现,官方为我们提供了一个option参数,大多数开发者都知道这个参数可以帮助我们调节Bitmap的质量,从而实现图片的压缩。public enum Config {原创 2017-03-20 13:07:20 · 797 阅读 · 0 评论 -
Android笔记之seekTo
有时候我们在播放视频的时候需要对视频进行seekTo处理。通过videoPlayer或者mediaPlayer的seekTo方法理论上是可以简单的实现。 public native void seekTo(int msec) throws IllegalStateException;可以看出我们只需要传入一个视频对应的毫秒数就可以直接对视频进行seek。但是实际上通过一个seekBar来进原创 2017-02-23 13:22:53 · 5700 阅读 · 0 评论 -
Android 笔记之Log
打印Log日志在程序开发调试中都无比重要,因此通常会为Log书写一个工具类来方便其使用。public class UtilLog { public static boolean IsLog = false; public static void setlog(String log) { if (IsLog) Log.i("xnews", log)原创 2017-01-08 16:16:11 · 344 阅读 · 0 评论 -
Android 笔记之Retrofit
Retrofit是一个基于okhttp再封装的网络请求框架,其独特的注解式构建模式十分适合对MVP模式下的项目进行搭建。首先是创建一个Retrofit对象,正如介绍上说的,它是基于okhttp进行再封装,因此一些特殊的设置需要直接使用到okhttp进行配置后使用。如网络请求超时时间,网络拦截器等等。如下://初始化okht OkHttpClient okHttpClie原创 2017-03-13 13:51:14 · 316 阅读 · 0 评论 -
Android笔记之获得虚拟按键、状态栏高度
开发中经常会需要计算各种布局高度,其中就包括了虚拟按键的高度和状态栏高度。在使用PopWindow时,如果选在从底部显示,这时如果没有计算虚拟按键高度就会导致在开启了虚拟按键的手机上PopWindow被虚拟按键遮挡。如果选择全屏显示,如果没有计算状态栏高度便会导致在一些Rom中强制显示状态栏,而PopWindow显示不全。以下是对应的代码。/** * 获取 虚拟按键的高度原创 2017-02-22 16:25:19 · 1291 阅读 · 0 评论 -
Android progressbar骚操作
作为比较常见的控件,经常需要针对项目对其进行一定程度的定制和修改,当然一些较大程度的定制和修改都是基于自定义View进行绘制的,但是一些改动较小的地方便可以使用Android原生progressbar进行实现。progressbar分为两种样式,一种为普通的圆形样式,没有具体的进度值,仅仅作为loading提示作用。另一种为水平样式,可以显示出当前的执行进度。可以在xml下通过不同的style...原创 2017-03-30 16:16:55 · 2596 阅读 · 0 评论 -
Android 异步方法以同步方式进行
强制异步转同步方法Android系统中规定耗时任务需要在异步线程中进行,特别是网络请求必须在异步线程中进行否则会抛出NetworkOnMainThreadException,但是在一些特殊的情况我们需要保证在获得到网络请求结果之后在进行余下操作,这时候便需要在UiThread中进行相关操作。这样就需要用到线程阻塞的原理,这里可以借助Callable或FutureTask来实现。public stat原创 2017-04-18 11:34:00 · 6579 阅读 · 0 评论 -
AndroidStudio 类成员变量规范设置
Android官方推荐所有类的成员变量都已mXXX格式进行书写,但是由于习惯了直接写名字和ButterKnife自动批量生成修改起来很不方便。这里通过AndroidStudio进行编程时可以直接设置默认的成员变量显示方式。原创 2017-04-18 11:42:00 · 2874 阅读 · 0 评论 -
Android 打造万能网络解析框架
一个普通APP的开发中使用最频繁的操作莫过于网络请求,既然这样我们便需要将全部的网络请求操作都集中起来使用统一的方法进行管理。否则一个临时的任务变更会增加大量的工作量对一个完整的网络请求进行分析,大致分为以下几个流程:发起网络连接得到回执消息,判断连接情况根据实际需求对数据进行解析发起网络连接通常会使用三方网络请求库,这里以Retrofit为例,首先需要对Retrofit进行初始化操作OkH原创 2017-04-25 15:28:27 · 664 阅读 · 0 评论 -
Android 多点触控(放大、缩小、旋转、位移)
通过多点触控实现图片的放大、缩小、旋转、位移效果。 private float oldX1 = 0; private float oldX2 = 0; private float oldY1 = 0; private float oldY2 = 0; private float oldRotation= 0; private boolean原创 2017-03-20 13:54:42 · 1999 阅读 · 4 评论 -
Material Design——RippleDrawable详解
Google在Android5.0之后推出了Material Design的设计风格,而涟漪Ripple效果是其中最具有代表性的。最近需要在项目中使用Ripple效果,看了网上很多介绍,大致都写的很基础,并且没有介绍清楚具体对应的使用方法,只有比较常见的几种。在碰到一些特殊情况后就不能适用了。因此这里总结下RippleDrawable的关键推荐的几种用法。最常见的使用方法,直接通过<Ripple>原创 2017-06-02 16:12:25 · 2293 阅读 · 1 评论 -
Android 单点触控(放大、缩小、旋转、位移)
移动开发中比较常见的手势操作有放大、缩小、旋转等。但是这其中大多数为两指实现的对图片操作手势。但是个别特殊情况例如对某个对话框进行手势操作,这样就需要用到单指实现操作手势了。相对于两指算法,单指要麻烦一些,特别对于数学不好的童鞋来说很难想到。因此特别写出来让大家参考一下。(虽然旋转的算法也是受了别人的启示才写出来,具体在哪里看到了忘记了)不BB直接上代码:public boolean onTouch原创 2017-06-19 09:47:27 · 1727 阅读 · 5 评论 -
Android Bitmap处理
几乎所有图片类文件在Android内存中都会以Bitmap位图的形式存在,由于各种奇葩的需求和性能优化的原因,优化Bitmap成为Android性能优化中最常见的手段之一。其中具体优化步骤这里暂不赘述,有兴趣的可以看我的另外一篇文章 Android Bitmap优化 最常见的Bitmap处理:分辨率处理。解决Bitmap内存占用大的问题,直接修改其分辨率是最有效的方式。常见的修改方式分为以下两种原创 2017-06-08 17:01:02 · 741 阅读 · 0 评论 -
Android Activity启动模式详解
Activity启动模式估计很多人都能了解个大概,但是其每个之间的关系其实很微妙,特别是在没有理解Activity启动原理的情况下实在是很容易造成混淆。LaunchMode首先需要先说一下,在我们创建一个Activity之后需要将Activity放到AMS中的一个任务栈中进行管理,既然是栈,自然也就满足栈“后进先出”的基本性质,这里就不多赘述。但是有一点需要注意,Activity需要存放原创 2017-06-20 18:15:45 · 293 阅读 · 0 评论 -
Android 笔记之Edit自动获取焦点
编程时经常会碰到这种情况,当页面中存在EditText等文本输入控件时会默认获取系统焦点,从而弹出软键盘,以下有几种解决方案1、在清单中让默认隐藏软键盘 <activity android:name=".MyTabActivity" android:windowSoftInputMode="stateHidden" />2、让父布局获得焦点,在父布局中添加android:focusab...原创 2017-01-08 16:01:31 · 635 阅读 · 0 评论