<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[HappyAndroidi的博客]]></title><description><![CDATA[Android的救赎]]></description><link>https://blog.youkuaiyun.com/JadynAi</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; JadynAi]]></copyright><item><title><![CDATA[Bitmap如何存储原始数据]]></title><link>https://blog.youkuaiyun.com/JadynAi/article/details/94357796</link><guid>https://blog.youkuaiyun.com/JadynAi/article/details/94357796</guid><author>JadynAi</author><pubDate>Sun, 30 Jun 2019 21:13:01 +0800</pubDate><description><![CDATA[原文地址
原创文章，未经作者允许不得转载

眉共春山争秀
可怜长皱
莫将清泪湿花枝，恐花也、如人瘦

概述
Bitmap是Android图片处理这块绕不过的一个主题，在处理Bitmap缓存这方面，一般会分为两部分:内存缓存和磁盘缓存。磁盘缓存这块呢，常用的就是使用Bitmap的compress函数，根据实际需求压缩为想要的图片文件。对于常规的带有透明度的图片来说，选择无损压缩成PNG或者Webp文...]]></description><category></category></item><item><title><![CDATA[解决AAC音频编码时间戳计算问题]]></title><link>https://blog.youkuaiyun.com/JadynAi/article/details/92988394</link><guid>https://blog.youkuaiyun.com/JadynAi/article/details/92988394</guid><author>JadynAi</author><pubDate>Thu, 20 Jun 2019 10:57:11 +0800</pubDate><description><![CDATA[原文地址
原创文章，转载请联系作者

西北望乡何处是，东南见月几回圆。
昨风一吹无人会，今夜清光似往年。

主题
音频是流式数据，并不像视频一样有P帧和B帧的概念。就像砌墙一样，咔咔往上摞就行了。一般来说，AAC编码中生成文件这一步，如果使用的是OutputStream流写入文件的话，就完全不需要计算时间。但在音视频同步或者使用Android自带的MediaMuxer来生成音频文件时，就需要计算音...]]></description><category></category></item><item><title><![CDATA[使用MediaCodeC将图片集编码为视频]]></title><link>https://blog.youkuaiyun.com/JadynAi/article/details/89847026</link><guid>https://blog.youkuaiyun.com/JadynAi/article/details/89847026</guid><author>JadynAi</author><pubDate>Mon, 06 May 2019 09:27:00 +0800</pubDate><description><![CDATA[原文地址
原创文章，转载请联系作者

绿生莺啼春正浓，钗头青杏小，绿成丛。
玉船风动酒鳞红。歌声咽，相见几时重？

提要
这是MediaCodeC系列的第三章，主题是如何使用MediaCodeC将图片集编码为视频文件。在Android多媒体的处理上，MediaCodeC是一套非常有用的API。此次实验中，所使用的图片集正是MediaCodeC硬解码视频，并将视频帧存储为图片文件文章中，对视频解码出...]]></description><category></category></item><item><title><![CDATA[Android：MediaCodeC硬编码解码视频，并将视频帧存储为图片文件]]></title><link>https://blog.youkuaiyun.com/JadynAi/article/details/89360242</link><guid>https://blog.youkuaiyun.com/JadynAi/article/details/89360242</guid><author>JadynAi</author><pubDate>Wed, 17 Apr 2019 17:15:12 +0800</pubDate><description><![CDATA[好久不见，AiLo肥来了！
原文地址
原创文章，转载请联系作者

醉拍春衫惜旧香，天将离恨恼疏狂。
年年陌上生秋草，日日楼中到夕阳。

目的

MediaCodeC搭配MediaExtractor将视频完整解码
视频帧存储为JPEG文件
使用两种方式达成

硬编码输出数据二次封装为YuvImage，并直接输出为JPEG格式文件
硬编码搭配Surface，用OpenGL封装为RGBA数据格式，再利用...]]></description><category></category></item><item><title><![CDATA[MediaCodeC解码视频指定帧，迅捷、精确]]></title><link>https://blog.youkuaiyun.com/JadynAi/article/details/89360203</link><guid>https://blog.youkuaiyun.com/JadynAi/article/details/89360203</guid><author>JadynAi</author><pubDate>Wed, 17 Apr 2019 17:14:04 +0800</pubDate><description><![CDATA[原创文章，转载请联系作者

若待明朝风雨过，人在天涯！春在天涯

原文地址
提要
最近在整理硬编码MediaCodec相关的学习笔记，以及代码文档，分享出来以供参考。本人水平有限，项目难免有思虑不当之处，若有问题可以提Issues。项目地址传送门此篇文章，主要是分享如何用MediaCodeC解码视频指定时间的一帧，回调Bitmap对象。之前还有一篇MediaCodeC硬解码视频，并将视频帧存储为图...]]></description><category></category></item><item><title><![CDATA[使用A*算法求迷宫最短路径问题]]></title><link>https://blog.youkuaiyun.com/JadynAi/article/details/81350022</link><guid>https://blog.youkuaiyun.com/JadynAi/article/details/81350022</guid><author>JadynAi</author><pubDate>Wed, 01 Aug 2018 23:16:56 +0800</pubDate><description><![CDATA[原创文章，转载请联系作者


  时光只解催人老，不信多情，长恨离亭，泪滴春衫酒易醒。


前言

最近接触了一个挺有意思的小课题，跟大家分享一下。就是利用A*算法，来计算迷宫可行路径。有关这个算法的知识，大家可以看看A*算法维基百科以及A星算法详解来稍作了解。代码地址在此Maze,喜欢Python的小可爱们可以拿去练练手。



提要说明

本题中的迷宫，是以宫格类型呈现的，在代码中的呈现为二维...]]></description><category></category></item><item><title><![CDATA[使用Kotlin的DSL构建Recyclerview适配器]]></title><link>https://blog.youkuaiyun.com/JadynAi/article/details/80978834</link><guid>https://blog.youkuaiyun.com/JadynAi/article/details/80978834</guid><author>JadynAi</author><pubDate>Mon, 09 Jul 2018 22:59:42 +0800</pubDate><description><![CDATA[原创文章，转载请联系作者



前言

这是Kotlin实践日记的第一章，使用Kotlin构建一个，使用方便、多功能的Recyclerview适配器——AcrobatAdapter。

AcrobatAdapter让开发者专注于Item的配置，包括Item的UI和数据显示，以及单击、双击、长按事件【且不会影响子View的事件传递】。而且不仅仅是单Item Style列表,还是多Item Style...]]></description><category></category></item><item><title><![CDATA[supportsRtl属性影响TextView的textAlignment属性，文字无法居中]]></title><link>https://blog.youkuaiyun.com/JadynAi/article/details/55253509</link><guid>https://blog.youkuaiyun.com/JadynAi/article/details/55253509</guid><author>JadynAi</author><pubDate>Thu, 16 Feb 2017 11:25:08 +0800</pubDate><description><![CDATA[manifest使用supportsRtl属性
  此属性是要实现RTL（从右到左）的布局镜面反射才会使用的。
开启了此属性后那些带有start和end的属性才可以使用。或者是在layoutDirection属性设置后，才能使用start或者end属性。为了适应不同地区的不同习惯，有的地区习惯从左往右，有的地区使用从右往左。]]></description><category></category></item><item><title><![CDATA[Android Studio自动生成单例代码]]></title><link>https://blog.youkuaiyun.com/JadynAi/article/details/54631350</link><guid>https://blog.youkuaiyun.com/JadynAi/article/details/54631350</guid><author>JadynAi</author><pubDate>Fri, 20 Jan 2017 14:55:59 +0800</pubDate><description><![CDATA[AS中有可以自己设置代码模板，使用起来简单方便。同样的，单例类的代码样式统一，除了类名外全部一致。所以使用模板更加方便。
在设置中的Editor—Live Template中新建模板，然后把单例的模板代码粘贴上去。
其中的NAMENAME属于自定义字段，给它赋予一个值即可。步骤如下：  
 
  然后给这个模板定义一个快捷模式即可。 
  到了这一步，快捷模板即可使用，但还有一个步骤，没有这个步骤，]]></description><category></category></item><item><title><![CDATA[Android知识点收集]]></title><link>https://blog.youkuaiyun.com/JadynAi/article/details/54575762</link><guid>https://blog.youkuaiyun.com/JadynAi/article/details/54575762</guid><author>JadynAi</author><pubDate>Mon, 16 Jan 2017 17:13:24 +0800</pubDate><description><![CDATA[View篇
ViewPager使用PagerAdapter的notifyDataSetChanged()方法，不会立即触发ViewPager.PageTransformer的动画效果，必须在滑动后才会触发。]]></description><category></category></item><item><title><![CDATA[RelativeLayout.LayoutParams使用addRule后出现错位]]></title><link>https://blog.youkuaiyun.com/JadynAi/article/details/54344527</link><guid>https://blog.youkuaiyun.com/JadynAi/article/details/54344527</guid><author>JadynAi</author><pubDate>Wed, 11 Jan 2017 16:06:16 +0800</pubDate><description><![CDATA[在ListView中使用RelativeLayout.LayoutParams的addRule方法后，出现组件错位的情况。
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams();
        params.addRule(RelativeLayout.ALIGN_RIGHT,R.id.test);
  add]]></description><category></category></item><item><title><![CDATA[Android DrawerLayout使用StatusBarUtil设置状态栏颜色失败的解决办法]]></title><link>https://blog.youkuaiyun.com/JadynAi/article/details/51553624</link><guid>https://blog.youkuaiyun.com/JadynAi/article/details/51553624</guid><author>JadynAi</author><pubDate>Wed, 01 Jun 2016 09:43:29 +0800</pubDate><description><![CDATA[本文是处于5.0以上系统的环境下进行的，以下暂时未能验证。
众所周知，4.4以下状态栏一般是无法改变颜色的，就是系统默认的黑色。4.4以上之后，系统可以设置状态栏颜色了。一般我们在进行状态栏适配的时候，就会分三种情况，4.4以下、4.4以上、和5.0以上。
之前我在适配的时候，4.4以上选择的半透明，5.0以上是不透明，也就是ToolBar是什么颜色，状态栏就是什么颜色。勉强称之为沉浸式状态栏。]]></description><category></category></item><item><title><![CDATA[Android Studio运行程序时显示apk not exists]]></title><link>https://blog.youkuaiyun.com/JadynAi/article/details/51427068</link><guid>https://blog.youkuaiyun.com/JadynAi/article/details/51427068</guid><author>JadynAi</author><pubDate>Mon, 16 May 2016 18:18:34 +0800</pubDate><description><![CDATA[解决办法，把gradle刷新就行辣 
以上]]></description><category></category></item><item><title><![CDATA[RecycleView的分割线之私人订制]]></title><link>https://blog.youkuaiyun.com/JadynAi/article/details/51419437</link><guid>https://blog.youkuaiyun.com/JadynAi/article/details/51419437</guid><author>JadynAi</author><pubDate>Sun, 15 May 2016 21:56:07 +0800</pubDate><description><![CDATA[首先，来几个分类吧：
默认分割线：高度为2px，颜色为灰色
addItemDecoration(
new RecycleViewDivider(mContext, LinearLayoutManager.VERTICAL));
自定义分割线：自定义分割线drawable
addItemDecoration(new RecycleViewDivider(
    mContext, LinearLay]]></description><category></category></item><item><title><![CDATA[NavigationView解决Item图标不显示原始颜色]]></title><link>https://blog.youkuaiyun.com/JadynAi/article/details/51416220</link><guid>https://blog.youkuaiyun.com/JadynAi/article/details/51416220</guid><author>JadynAi</author><pubDate>Sun, 15 May 2016 11:09:09 +0800</pubDate><description><![CDATA[NavigationView是一个很好的实现侧边抽屉效果的组件，主要解决一下可能遇到的问题。
  设计好的彩色图标，在NavigationView中却是灰色。可以设置属性app:itemIconTint，将item的图标设置为统一颜色。但这样也并不好，所以可以通过如下方法：
setItemIconTintList(null);
传入一个null参数，这样原本的彩色图标就可以显示出来了。]]></description><category></category></item><item><title><![CDATA[ToolBar左侧图标设置以及点击事件配置]]></title><link>https://blog.youkuaiyun.com/JadynAi/article/details/51327264</link><guid>https://blog.youkuaiyun.com/JadynAi/article/details/51327264</guid><author>JadynAi</author><pubDate>Thu, 05 May 2016 23:28:58 +0800</pubDate><description><![CDATA[Material Design包下的ToolBar已经在逐步取代以前ActionBar的地位了，相比较之下，ToolBar更加显得灵活，已经不局限于一个简单的标题栏。 
更像是一个自由的控件。
如何给ToolBar设置左侧图标。
  ToolBar左侧的图标其实很讲究的，之前在不了解情况前，我使用了一种比较蠢得方法，就是在ToolBar内放置了一个gravity为left的ImageView。上面那]]></description><category></category></item><item><title><![CDATA[Android论如何写一个正确的单例模式]]></title><link>https://blog.youkuaiyun.com/JadynAi/article/details/51155304</link><guid>https://blog.youkuaiyun.com/JadynAi/article/details/51155304</guid><author>JadynAi</author><pubDate>Thu, 14 Apr 2016 21:37:45 +0800</pubDate><description><![CDATA[犹记得当初学单例模式的时候，学的是这样的
  饿汉式，简单粗暴无脑。但是无法延迟创建对象
public class Singleton {
    private static Singleton = new Singleton();
    private Singleton() {}
    public static getSignleton(){
        return singlet]]></description><category></category></item><item><title><![CDATA[自定义View——神之ViewDragHelper实现ListView滑动删除]]></title><link>https://blog.youkuaiyun.com/JadynAi/article/details/51031348</link><guid>https://blog.youkuaiyun.com/JadynAi/article/details/51031348</guid><author>JadynAi</author><pubDate>Fri, 01 Apr 2016 00:17:38 +0800</pubDate><description><![CDATA[之前有段时间在自学研究自定义View，刚好那时候需要做一个项目，有用到ListView滑动删除的功能。趁着这段时间有空，就把这个Demo分享出来。
先看看实际的效果吧  因为Gif录制软件的关系，鼠标漏掉了，大家将就看哈。要是有什么好的录制软件，也可以推荐给我。
先说说思路：思路这个东西其实很重要，有的时候只记代码是没有用的。在做某些功能之前，你首先要很清楚的一点是，就是要使用什么样的技术来实现这种]]></description><category></category></item><item><title><![CDATA[Android Accessibility实现程序锁功能]]></title><link>https://blog.youkuaiyun.com/JadynAi/article/details/50976216</link><guid>https://blog.youkuaiyun.com/JadynAi/article/details/50976216</guid><author>JadynAi</author><pubDate>Thu, 24 Mar 2016 23:47:07 +0800</pubDate><description><![CDATA[之前在做卫士项目的时候，做程序锁的时候，遇到一个问题。以往做程序锁的时候，我们都会选择开启一个后台服务，然后在服务中不断获取当前运行的栈信息，提取栈顶的packageName来判定当时运行的程序是否为锁程序。但这种方式在API21之后不能用了，因为getRunningTasks这个方法在API21已经被弃用了。在Android 5.1的系统也不支持此种方式。 
但别着急，在5.1版本后我们还有另一种]]></description><category></category></item><item><title><![CDATA[Android Studio下简单编译AIDL方法]]></title><link>https://blog.youkuaiyun.com/JadynAi/article/details/50899314</link><guid>https://blog.youkuaiyun.com/JadynAi/article/details/50899314</guid><author>JadynAi</author><pubDate>Tue, 15 Mar 2016 19:43:50 +0800</pubDate><description><![CDATA[今天当我天真的打开Android Studio，准备开始一天开心的工作时。一个小小的问题迎头向我砸来，那就是有一个小模块需要用到源码里的AIDL。然后我直接把它扔在相应的包里了。如图：   包名什么的都是Ok的，我已经按照代码里的包名改过来了，但是还是一直编译不通过。记得Eclipse里直接放到这里就行了啊。
 
然后经过一番查证以及实验，最终确定了必须在app：里的build.grade里加上这样]]></description><category></category></item></channel></rss>