自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (4)
  • 收藏
  • 关注

原创 Android上的基于协程的存储框架

通过使用现有的存储框架比如SharePreference,MMKv,结合协程,实现一个轻量级的响应式存储框架。

2023-08-10 15:22:58 965

原创 基于Hilt的依赖注入跨模块导航框架的Kotlin实现

基于Hilt的依赖注入跨模块Android App 导航框架,使用Kotlin语言实现,采用了清洁架构的思想,支持MVVM,协程,适合多模块或者多组件的项目使用,在设计上让导航相关的代码更干净、更规范。

2023-07-24 17:42:49 842 2

原创 分析解决No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android

今天用Android Studio 3.2 打开以前的项目,在Build的时候,报错了: No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android 网上的解决方案是,去NDK官网,下载对应版本的NDK,然后把mips的放到自己的目录下,但是,这个NDK应该...

2019-01-24 10:40:47 231

原创 基于Licode的WebRtc 的Rtmp推流实现

已经很久没写文章了,之前写了一些,一直存在笔记本里,没有整理,已经转做移动端流媒体好一阵子了,也算才入了门吧。网上关于Licode的资料很少,最近公司要做一个视频对话+直播+合流的系统,我们打算复用之前的合流系统,原来视音频合流系统是基于Rtmp协议的。在即时对话方面,我们选用了Licode作为服务器,使用Licode,我们可以很方便地建立多人实时聊天,我已经实现了Android端的功能了(基...

2018-11-15 10:39:56 8346 3

原创 关于WebView 全屏没有执行JS的问题

最近在使用WebView的时候,遇到了一点小问题:在使用WebView的时候,如果WebView的大小比较大,横屏状态,然后使用JavaScript去绘制动画,发现,js会被延迟调用,就是,比如当前我从长连接获取到数据,调用绘制100次,这100次 不是立刻绘制,显示的,往往会延迟几秒甚至几十秒才执行。调试的时候也发现,没有进入到js方法中。后来发现,这是个本不该发生的问题,在andr

2017-11-16 14:40:36 502

原创 025.自定义View中应用贝塞尔曲线

之前一直看QQ的未读消息拖拽消失设计得很好,我一直觉得那个设计很好,他们的UI是真心强,于是,我也一直想写个一样的玩意来玩玩。最近刚好在复习View相关的知识,就拿这个来练手,下面先来看实现的效果图: 这是我希望实现的效果,这个效果的实现在第二个图能看出一点端倪。这里面的曲线绘制,使用的是贝塞尔曲线。下面用几个例子简单介绍下贝塞尔曲线,参考网上大神的文章,我对原文大神的代码做了一点点修改。什么是

2016-09-09 13:44:16 775

原创 024.RemoteViews的内部机制

RemoteViews 的作用是在其他的进程中显示并且更新View界面,为了更好理解它的内部机制,先看下它的主要功能。    首先看它最常用的构造方法:        public RemoteViews( String packageName ,String layoutId )     第一个参数是当前应用的包名,第二个参数表示代价在的布局文件。RemoteViews目前并不能支持

2016-09-07 14:51:28 579

原创 023.PendingIntent 概述

PendingIntent表示一种待定、等待、即将发生的意图,就是说接下来有一个Intent 将在某个条件下在某个时刻发生。因此PendingIntent和Intent的区别在于,Intent是立即发生的,而PendingIntent则是可能会在某个特地的时刻发生的。PendingIntent典型的应用场景就是给RemoteViews添加点击事件,因为RemoteViews运行在远程进程当中,因此

2016-09-07 14:47:11 369

原创 022.RemoteViews的介绍和使用

RemoteViews表示是一个可以在其他的进程中显示View结构,由于它在其他进程中显示,因此,我们刷新这个界面需要通过跨进程通信来实现,而RemoteViews    提供了一组基础的操作用于更新界面。    RemoteViews在Android中的使用场景有两种:通知栏和桌面小部件。    1.RemoteViews的应用    RemoteViews在实际开发中,主要

2016-09-07 14:44:19 607

原创 021.关于自定义View

1.让View支持wrap_content     这是因为直接继承View或者ViewGroup的控件,如果不在onMeasure中对wrap_content做特殊处理。那么当外界在布局中使用wrap_content时就无法达到预期的结果。2.如果有必要,让自定义的View支持padding,充分考虑margin和padding对ViewGroup的影响    这是因为直接继

2016-09-07 14:40:17 339

原创 020.View的Draw过程

View的Draw过程也是和measure、layout过程一样,都是父分发到子的一个过程。而View的Draw的绘制,我们在ViewRootImpl的performTraversals方法中可以看到如下代码:     boolean cancelDraw = attachInfo.mTreeObserver.dispatchOnPreDraw() || vie

2016-09-07 14:37:58 653

原创 启动模式:singleTask 不是 Intent.FLAG_ACTIVITY_NEW_TASK!

今天实验了一下 Intent.FLAG_ACTIVITY_NEW_TASK  和singleTask结果发现了一些问题,在这边记录一下:1.现在有ActivityA ,和Activity B ,在XML中 没有指定launchMode       从桌面启动应用 ,    A启动B ,B启动A ,启动的时候都设置FLAG_ACTIVITY_NEW_TASK  

2016-09-05 19:51:08 1369

原创 019.View的layout过程

View的Layout过程,也就是布局子元素的过程,ViewGroup通过这个过程来确定子元素的位置,当ViewGroup的位置被确定了以后,就会在onLayout中遍历所有的子元素并且调用这些元素的layout方法,在layout方法中onLayout方法会被回调.下面我们从View的Layout方法开始看:   public void layout(int l, int t, int r,

2016-08-25 18:11:23 360

原创 018.View的Measure过程

在前面的文章中,我们说过,View的三大流程包括:measure过程、layout过程、draw过程。在这边,我们将开始学习View的Measure过程。    首先,我们从根视图开始看,也就是ViewRootImpl开始入手,根视图的measure过程是从performTraversals 开始的,在调用measure方法之前,会先根据规则生成相应的MeasureSpec值,然后调用perf

2016-08-25 18:10:21 344

原创 017.View与窗口:AttachInfo

每一个View都需要依赖于窗口来显示,而View和窗口的关系则是放在View.AttachInfo中,关于View.AttachInfo的文章少,因为这个是View的内部类而且不是公共的,在应用层用的很少,只有在ViewRootImpl等类中才用到了,不过我觉得这个还是有点学习的必要,因此在这篇文章中就从源码入手学习下AttachInfo这个类。    AttachInfo 看到这

2016-07-04 17:14:03 6803

原创 016.View的测绘基础MeasureSpec

在学习onMeasure方法前,首先要掌握MeasureSpec这个类。MeasureSpec 主要是通过父容器的LayoutParams上的规则生成的,它影响到了测量的时候View的宽高。1.阅读MeasureSpec源码下面开始从源码开始阅读,源码上有一些注释,我就先自己翻译成中文:/** *一个MesasureSpec代表着从父容器到子控件的布局需求。

2016-07-04 17:10:54 404

原创 015.ViewRoot和DecorView

学习工作原理的话,首先要知道View有三大流程,测量流程、布局流程、绘制流程。之后再学习一些常见的回调方法,这样在我们写自定义View的时候,就能更加得心应手了。    1.ViewRoot:    ViewRoot对应ViewRootImpl类,它连接着WindowManager和DecorView。View的三大流程,都是同个ViewRoot来实现的。在ActivityThre

2016-06-20 22:20:03 477

原创 13.View的事件分发机制——dispatchTouchEvent详解

在前面的第二篇文章中,我们提过,View的事件分发是一种委托思想:上层委托下层,父容器委托子元素来处理这个流程。接下来,我们就将深入去学习View的事件分发机制。1.事件的传递流程    事件,在Android中对应的类是MotionEvent,因此,我们要分析的就是MotionEvent这个类。对点击事件的分发,其实就是对MotionEvent的对象进行处分发。所以,当一

2016-05-12 15:42:10 14234 1

原创 12.View的滑动

1.scrollTo和ScrollBy    为了实现滑动,View提供了两个方法来让我们实现这个功能,那就是scrollTo和scrollBy方法,    scrollTo的方法如下:     /** * Set the scrolled position of your view. This will cause a call to * {@link #onSc

2016-05-09 14:02:42 727 1

原创 11.View的基础知识

1.View简介    View是Android中所有控件的基类,不管是简单的Button、TextView还是复杂的ListView、GridView什么的,都是直接或者间接继承View。因此,View是界面层的控件的一种抽象。除了View以外,还有ViewGroup,ViewGoup代表着一组控件,并且ViewGroup也继承于View。这表示,View本身可以是单个,也可以是多个控件,这

2016-05-09 14:00:51 842

原创 10.Binder进阶:系统服务中的Binder

10.1 Binder与SystemService    在我们编写APP程序的时候, 经常会是用getSystemService(  String serviceName ) 这个方法,来获取一个系统的服务对象。我们查看源码:    frameworks/base/core/java/android/app下ContextImpl.java ,可以看到SystemService可以通过在

2016-05-09 13:57:36 954

原创 9.Android中的IPC方式——Bundle、文件共享、Messenger、AIDL、Content-Provider

Android中的IPC方式有很多,比如可以通过Intent中附加extras(Bundle类型)来传递信息,或者通过共享文件的方式来共享数据,还可以采用前面的文章说的Binder方式来跨进程通信,另外ContentProvider天生就支持跨进程访问的(ContentProvider底层使用的就是Binder机制),所以我们也可以使用ContengProvider来进行IPC。另外,我们也可以通

2016-05-02 23:31:26 3245 1

原创 8.Binder详解

本文详细介绍了Binder机制,重点介绍了使用Binder完成远程调用的过程,解释了queryLocalInterface带来的困惑,介绍了Binder驱动和Binder对象的关系。

2016-04-30 23:33:41 5437

原创 7.Serializable和Parcelable

Serializable和Parcelable接口可以完成对象的序列化过程,当我们需用使用Intent 和Binder 传输数据的时候,就需要使用到Parcel和Serializable.而有时候,我们需要持久化数据、或者是传输数据到网络上,我们也要使用Serializable来完成对象的序列化。

2016-04-30 23:29:32 509

原创 6.Android中的多进程模式

介绍了Androidr如何开启多进程,并且介绍了多进程会带来的问题。

2016-04-30 23:28:03 893

原创 5.IPC简介

对Android的IPC机制进行简单的描述。

2016-04-30 23:25:57 385

原创 4.Intent-filter的匹配规则

本文描述了隐式调用Activity的方法,以及Intent-filter的过滤规则。

2016-04-28 04:46:23 668

原创 3.Activity的启动模式与任务栈学习笔记

本文复习了Android的四种启动模式,并且逐一进行详细分析,并且详细探讨了任务栈以及Activity启动相关的内容。

2016-04-28 04:39:42 562

原创 2.Activity异常情况下的生命周期分析学习笔记

Activity除了受用户操作所导致的正常的生命周期方法调度,还有一些异常情况。比如:当资源相关的系统配置发生改变以及系统内存不足的时候,Activity就有可能被杀死。情况可以分为下面2种。资源相关的配置改变和资源内存不足导致低优先级的Activity被杀死。

2016-04-27 11:22:21 542

原创 1.Activity正常状况下的生命周期的扩展学习笔记

本文对Android中Activity的生命周期进行深入学习,简要描述了Activity的启动流程,并且对Activity启动相关源码进行分析,判断不同Activity启动时候onPause和onResume的时序关系。

2016-04-27 11:16:36 495

原创 2.CollapsingToolbarLayout详解和应用

本文介绍了CollaspingToolbarLayout的应用,详细对其中的属性进行了探索和介绍。

2016-04-26 18:28:59 5310 1

原创 1.CoordinatorLayout应用笔记

学习了CoordinatorLayout,以及在其中应用AppBarLayout,Toolbar,FloatingActionButton,学习了CoordinatorLayout、AppBarLayout、Toolbar这几个控件的关键属性的作用。

2016-04-26 16:24:48 1139 1

Android贝塞尔曲线实现粘性动画

Android上贝塞尔曲线实现粘性动画,类似QQ未读。其中也有贝塞尔曲线的入门实例。 博客地址:http://blog.csdn.net/savelove911

2016-09-09

Aidl测试Demo

AIDL的测试Demo,也是http://blog.csdn.net/savelove911/article/details/51288577 的实例代码。

2016-04-30

CollapsingToolbarLayout详解和应用Demo

CollapsingToolbarLayout详解和应用 http://blog.csdn.net/savelove911/article/details/51252900 的源码

2016-04-27

FFmpegTest

在android上使用ffmpeg读取视频的信息,查看视频的编码等信息,改进后可以用于合并视频,已经编译过了

2014-12-04

空空如也

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

TA关注的人

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