自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (3)
  • 收藏
  • 关注

原创 android隐藏桌面图标

  做产品留存很重要,做变现小白很重要, 如何让自己的app一直处于活跃状态,这里另辟蹊径,在手机息屏的时候创建一个和系统图标一样的快捷方式。然后将自己的应用的图标隐藏。下面我们来看具体步骤:1.如何监听手机息屏.   一般产品集成工具类时都会有相关类似的方法,public class ScreenStatusChangeReceiver extends BroadcastRecei...

2018-09-06 21:44:58 2758 2

原创 YUV格式详解

人眼对亮度的敏感程度要高于对色度的敏感程度,人眼对于亮度的分辨要比对颜色的分辨要精细一点,如果把图像的色度分量减少一点,人眼也是丝毫感觉不到变化和差异的。YUV 可以将亮度信息(Y)与色度信息(UV)分离,没有UV信息一样可以显示完整图像,只不过是黑白的,也是一种颜色编码方法,,YUV和RGB可以通过公式互相转换,图片中每一个像素的颜色信息,除了可以用RGB的方式表示,也可以用YUV的方式表示。// YUV 图不能直接用于显示,需要转换为 RGB 格式,而 YUV 转 RGB 是一个逐像素处理的耗时操作,

2023-10-26 11:37:00 115

原创 音视频开发之H264编码原理

120FPS的解码器去播放60帧的视频 与60FPS的解码器去播放60帧的视频 播放效果是一致的 120FPS 只不过是一帧渲染了两次,通过运动补偿技术(宏块由第一帧在A点,第二帧在B点,由A点到B点的运动轨迹是可以推算出来的,因此我们可以在第一帧到第二帧之间插一个计算的虚拟帧出来,使得画面更加细腻流畅)120FPS的解码器去播放60帧的视频 就是60帧原有视频 + 60帧虚拟帧。GOP就是两个I帧之间的视频流序列包含第一个I帧,GOP可以理解为一个视频场景,场景中的物体都是比较类似的,

2023-10-12 15:19:54 138

原创 音视频开发之重拾图片

之所以比图片理论计算大小少,是因为在相同分辨率,相同位深度的前提下,把图片存成不同的格式(jpg png)都是经过压缩后的图片,所以他们的大小会比理论值偏小。关于32bit 基于24bit 增加8个位的透明通道,可以表示带有透明度的颜色,比如CSS种rgba(255,0,0,0.5)表示50%透明度的红色。2.有损压缩 (会损失图片质量,压缩率高,体积小,解压后无法还原图片的原始数据, 会损失一些图片信息)位深度越大,能表示的颜色数量就越多图片也就越鲜艳,颜色过渡就会越平滑。

2023-10-10 13:54:27 69

原创 iOS 如何判断静音开关是否打开

在以前的iOS版本中 api 这个接口是暴露出来的 现在不知道为什么api 不支持了,方法采取和网上的大多数一样,播放一段很短的静音音频,看回调时间,接触iOS开发没多久,对OC不熟悉,直接撸一个Swift的,工具类代码 追求准确性直接上代码:import Foundationimport AudioToolboxclass MuteDetector: NSObject { static let shared: EBMuteDetector = { let pat

2020-09-18 15:43:16 1004

原创 swift 和 kotlin闭包的演变

关于函数类型:函数类型由函数的形参类型 -> 和 返回值组成 使用函数类型的好处就是让程序更加灵活函数类型和闭包类型是完全一致的,当函数需要传入fn : (Int) -> () 既可以传入一个函数,也可以传入一个闭包func foo(a : Int, name : String) -> String{ //这个函数的函数类型 (Int, String)-> String 如果函数没有返回值则该函数 //函数类型为(Int, String)-> (

2020-08-25 17:29:10 199

原创 用kotlin实现最基本的ListView数据展示

class MainActivity : BaseActivity(){ var mDataList = mutableListOf<User>();//相当于创建一个空的集合 lateinit var adapter : MyAdapter override fun onCreate(savedInstanceState: Bundle?) { ...

2019-07-05 10:06:20 1250

原创 Kotlin区间 循环语句 分支语句 延迟初始化笔记

val range : IntRange = 0..1024;//代表着区间[0, 1024]val range_exclusive : IntRange = 0 until 1024;//待变着半开区间[0, 1024) = [0, 1023]val arrayOfInt : IntArray = intArrayOf(1,3,5,7)val arrayOfInt1 : Array&l...

2019-05-07 10:46:53 217

原创 Kotlin空安全笔记

fun getName() : String ?{ return null;}fun nullSafeTest(){ val name : String = getName()?: return;//getName() 为null的话就return,否则会将getName的值赋值给name print(name.length); val value : S...

2019-05-07 10:44:55 360

原创 Kotlin学习环境配置

最近接下来一段时间准备学习一下Kotlin,什么是Kotlin?Kotlin是一门把java平台作为目标的新的编程语言,几乎可以用于如今java遍及的所有地方:服务器开发。Android 应用开发...将内容整理为博客的形式一是为了督促自己有一个总结整理的习惯,加强自己学习,而是大家可以一起交流进步,不BB。还是那句话不要只看不做,撸代码要在代码里面找答案,在coding中学习。所有的博客...

2018-11-21 17:41:36 259

原创 Android JNI 调用

java jni 的本意是Java Native Interface(java 本地接口), 他是为了方便java调用C, C++等本地代码所封装的一层接口。因为java具有良好的跨平台性,所以在与每个平台的底层交互能力不够强大,于是Java专门提供了Jni专门用于和本地的代码交互,通过Jni用户可以调用C,C++编写的代码。什么是NDK呢? NDK是Android为开发者提供的一个工具集合,通...

2018-11-20 18:11:37 1206

原创 android 新用户判定

 在app许多业务逻辑都要做新老用户的区分,哪些是新安装用户, 哪些是升级上来的老用户。我们这里采用判断进入启动页的次数+app安装的时间来判断: public static boolean isNewUser(){ int splashCount = LocalStorageManager.getInt(SharePrefConstant.SPLASH_COUNT, 0);...

2018-03-21 20:47:35 1823

原创 解决属性动画ofArgb的版本限制问题。

   属性动画ValueAnimator.ofArgb 在Android 版本小于5.0时不兼容,会导致程序崩溃,那么如何解决这一问题呢?这就需要用到自定义估值器方面的知识。 if (Build.VERSION.SDK_INT &lt; 21){ mGradientAnim = ValueAnimator.ofObject(new TextArgbEvaluator(), start...

2018-01-30 20:58:32 1102

原创 android开发中的文件路径相关

1.应用私有存储:  Context.getFileDir()----&gt; /data/data/packageName/files  Context.getCacheDir()---&gt; /data/data/packageName/cache这两个路径写权限不需要申请,没有Root的手机是无法用文件管理器工具查看。这两个目录同时对应设置中的清除数据,清除缓存。2.应用扩...

2018-01-30 20:45:04 924 1

原创 android跳转到系统的收件箱,系统通话记录

public void ViewMessage(){ Context context = ApplicationEx.getInstance(); try { String defaultApplication = Settings.Secure.getString(context.getContentResolver(), "sms_default_applica

2017-05-08 11:34:07 461

原创 adb 命令行获取android数据库文件并在可视化工具下显示

如果你在做需求的时候无从下,就应该学会分析竞品数据,今天来分析Sqlite数据库,产品自带的数据库下包含很多有用信息,比如字段,你可以根据竞品数据字段去大致设计自己产品的数据库,让自己产品的功能需求更加完善。首先为大家推荐一款数据库可是话文件:SQLite Expert Personal 举个例子来引导大家分析,两个Uri 第一个:content://media/external/file

2017-03-28 20:11:49 144291

原创 关于Android事件分发机制一些要注意的问题

有关android的事件分发机制,不再强调其重要性,本篇文章也不会去分析其基本流程,只是提出几个比较重要的知识点,在小编看来,android 事件分发机制,事件处理机制,是Activity ViewGroup View 对用户事件的一种传递与处理。这里分析三个问题:1.在android中那些元素具备事件分发处理的能力? 2.dispatchTouchEvent ( ) 返回 true 或者 fal

2017-02-24 16:53:48 440

原创 动态的改变Textview的margin属性

在代码里面动态设置TextView的Margih属性

2017-01-23 14:12:49 1337 1

原创 垃圾清理动画

小编就职于一家研发手机工具软件的开发公司,这是小编的第一篇博客,我会坚持下去,把自己的心得分享给大家,希望大家也要在自己的道路上坚持下去,在软件开发的道路上越走越好!这篇博客给大家带来一个简单的功能实现,在垃圾扫描的同时加入动画,接到的需求是 滑块2秒滑过去,掉头反转,2s滑回来,停顿0.8s在次反转,重新开始循环。好了就拿这个比较简单的动画需求实现来作为我的第一篇博客,动...

2016-11-03 16:45:54 2239 1

创建快捷方式工具类

兼容android8.0,Build.MODEL为SM-G9508创建快捷方式,判断快捷方式是否创建成功。

2018-09-06

自定义View随机生成数字验证码

自定义View基础入门Demo, 随机生成数字验证吗,包含自定义View流程,onMesure测绘知识点

2018-02-07

android多媒体开发高级编程

2017-01-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除