自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 收藏
  • 关注

原创 5分钟教你做一个WebView广告过滤器

先来看看效果 这站做的好,满满的广告,许多浏览器都有广告屏蔽功能,实现方式也各不相同,今天我们就来实战下怎么样把这些烦人的广告都干掉。这里讲的是webview里面的广告,所以我们从网页来分析这个页面。 (1)广告的加载过程 通过这张图我们能发现网页加载过程是加载js,css,html,以及图片等等一些列的东西,每一个操作都是一个请求,同理,要想加载一个广告那么就必须请求广告。请求广告的

2017-12-26 15:16:39 6384 1

原创 基于通用Popwindow

Popwindow的频率还是比较高的,为了避免每次使用都单独创建浪费时间,浪费精力所以封装了一个通用的Popwindow 使用效果图项目地址:https://github.com/faneq/CustomPopwindow使用方法: CustomPopupWindow customPopupWindow = new CustomPopupWindow.Builder()

2017-12-20 11:42:19 370

原创 LayoutInflater源码简析

关于LayoutInflater的基本用法就不再累述了,本篇主要通过分析inflate()的源码搞清几个参数的作用。首先来看一个Demo,这个Demo很简单就是通过调用LayoutInflater的inflate方法获取一个蓝色背景的TextView并以match_parent的形式添加到一个300dp*100dp的RelativeLayout上,我们传递不同的参数来看一下实现效果之间的差别。

2017-12-20 11:25:48 285

原创 ARouter使用及源码简析

ARouter是阿里巴巴开源的Android平台中对页面、服务提供路由功能的中间件,提倡的是简单且够用。基本用法1.添加依赖配置android { defaultConfig { ... //此处每一个Module都需要配置,具体原因见下文 javaCompileOptions { annotationProcessorOptions {

2017-12-20 11:08:57 3241

原创 java内部类和静态内部类

Java 静态内部类作用需要了解2个概念:内部类和静态修饰符static * 首先,用内部类是因为内部类所在的外部类有一定关系,往往2只有该外部类调用此内部类,所以没必要专门创建个类来承载。 * 静态都是用来修饰类的内部成员的,比如静态方法,静态成员变量,它唯一的作用就是随着类的加载(而不是随着对象的产生)而产生,所以可以用类名+静态成员名直接获得。举个例子:Car类有个叫wheel的内部类

2017-10-10 17:30:46 315

原创 CoordinatorLayout,CollapsingToolbarLayout,NestedScrollView的使用

CoordinatorLayout的使用 CoordinatorLayout 实现了多种Material Design中提到的滚动效果。先看看常见的几种效果:控制哪个view应该扩展还是收缩,以及其显示大小比例,包括视差滚动效果动画。 隐藏Toolbar嵌套tablayoutToolbar的扩展与收缩 这里需要CoordinatorLayout作为主布局容器。 <android.

2017-10-10 10:03:23 2232

原创 依赖butterknife:8.8.1 控件NullPointerException解决办法

按git上面给出的依赖方式在使用的时候控件无法创建,导致NullPointerException,所以换一个依赖方式来解决这个问题1.Project的build.gradle文件中增加classpathclasspath 'com.neenbedankt.gradle.plugins:android-apt:1.8'buildscript { repositories

2017-10-08 17:03:50 1159

原创 升级rxlifecyle引起错误com.google.code.findbugs:jsr305

升级rxlifecyle引起错误com.google.code.findbugs:jsr305Warning:Conflict with dependency 'com.google.code.findbugs:jsr305'. Resolved versions for app (3.0.1) and test app (2.0.1) differ. See http://g.co/android

2017-10-07 14:59:49 365

原创 NDK .so Android调用JNI出错 java.lang.UnsatisfiedLinkError: No implementation found for的解决方案

抛异常:09-15 02:55:15.835 10255-10255/com.example.fanenqian.jndk E/AndroidRuntime: FATAL EXCEPTION: main Process: com.examp

2017-09-15 11:11:10 14603 3

转载 Android界面性能优化必读

界面是 Android 应用中直接影响用户体验最关键的部分。如果代码实现得不好,界面容易发生卡顿且导致应用占用大量内存。        我司这类做 ROM 的公司更不一样,预装的应用一定要非常流畅,这样给客户或用户的第一感觉就是快。又卡又慢的应用体验,会影响客户或用户对产品的信心和评价,所以不可忽视。目录一. Andr

2017-09-13 09:46:03 3243

转载 Android ConstraintLayout使用指南

升级Android Studio 2.3之后,IDE默认生成的Activity布局都是以ConstraintLayout做为根布局,体验了一把这个Google去年就开始力推的ConstraintLayout后,觉得非常不错,本文用于记录ConstraintLayout各个方面的使用知识。平台支持ConstraintLayout最低兼容Android 2.3;目前Android St

2017-09-11 16:08:04 336

原创 单例模式详解

什么是单例模式        所谓单例模式,就是确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例的设计模式。单例模式是最简单的设计模式,也是应用最广的设计模式。一般用于避免产生多个对象消耗过多的资源或者某种类型的对象必须独一无二的情景。单例模式的实现方式(1)饿汉式        单例模式极其简单,仅有一个单例类,并且每个单例都必须有一个无参

2017-08-25 13:25:39 487

原创 Android 8.0 新特性及开发指南

背景介绍谷歌2017 I/O开发者大会今年将于5月17-19日在美国加州举办。大会将跟往年一样发布最新的 Android 系统,今年为 Android 8.0。谷歌在今年3 月21日发布 Android 新系统开发者预览版时已给新系统取名为 Android O。自2008 年发布以来, Android 依靠 Google 的生态运作,全球市场份额在2016年底已超过85% 。而近几年依靠

2017-08-08 09:54:36 343

原创 Java to Kotlin(java 与 Kotlin对比)

java与Kotlin对比

2017-06-29 16:27:28 616

原创 (Kotlin2)Android Studio 中安装 Kotlin Plugin

打开Settings选择Plugins模块,搜索Kotlin,然后选择安装,这个需要一个下载的过程,下载完安装成功后重启一下Android Studio 就可以了。这里需要安装两个Kotlin相关的插件,Kotlin和Kotlin Extensions For Android.创建一个Android 项目在Android Studio 中创建一个Android 项目,如下图:

2017-05-18 11:31:42 564

原创 (Kotlin1)初识Kotlin编程语言

谷歌在今天的I/O 2017开发者大区会上宣布了安卓开发全面支持Kotlin编程语言。Kotlin是由JetBrain(Android Studio/IntelliJ的开发公司)公司开发的面向对象编程语言,支持安卓和网页开发。在之前这个语言就已经支持了安卓平台开发,但是直到今天谷歌开发者大会上才宣布对该语言的全面支持和维护。很多网友可能不禁会想,是不是使用这个语言就会脱离了Java虚拟机机

2017-05-18 11:22:21 660

原创 Retrofit—okhttp Cache缓存策略

为什么要使用cache?往往我们在请求完一次后,再想请求同样的内容,我们不想再从服务端获取,而是从第一次访问的时候保存下来的数据请求,这样有利于减少访问时间、降低网络负荷。ok,我们知道需求以后,就得看下Cache有哪些东西。http缓存相关头1.Expires (实体标头,HTTP 1.0+)一个GMT时间,试图告知客户端,在此日期内,可以

2017-05-12 15:08:04 949

原创 ScrollView和GestureDetector触屏事件冲突

当我们使用GestureDetector手势识别当前的动作并作相关的功能的时候,会发现如果当前的页面包含有滚动条或者listview的时候,GestureDetector中的onFling等。一些的方法不能正常的使用,或者是在一个activity的有些部位可以使用而其他的就不行。下面给一个解决办法,之所以会出现上述的情况网上说是因为ScrollView等一些控件抢占了MotionEvent

2017-05-10 15:58:18 797

原创 自定义scrollview实现类似地图横向纵向同时滚动

自定义scrollview实现类似地图横向纵向同时滚动public class HorizontalScrollView extends FrameLayout { static final int ANIMATED_SCROLL_GAP = 250; static final float MAX_SCROLL_FACTOR = 0.5f; private lo

2017-05-10 11:26:43 632

原创 Android7.0 自定义view开启硬件加速报错

Android7.0 开启硬件加速后部分应用运行出错。canvas绘制从网络获取图片报错出现异常:5-10 02:07:53.362 1675-1758/system_process W/WindowAnimator: Failed to dispatch window animation state change.

2017-05-10 10:23:39 2819

原创 两种方式实现多线程区别

在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口;Thread类是在java.lang包中定义的。一个类只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了,但是一个类只能继承一个父类,这是此方法的局限。下面看例子:package org.thread.demo;  class MyThread extends Th

2017-04-20 13:27:09 955

原创 鲁班图片压缩

前言Luban是图片压缩工具,通过参考或者自创压缩规则推求极致的压缩效果 目前的版本压缩效果主要参考微信。因为微信用户量最大,如果压缩后的图片越接近微信则越被用户接受。说明目前的Luban只是压缩结果接近微信,自身的算法只是为了达到这个效果而设计的。与微信并无任何联系,也不敢妄称是微信的算法。算法步骤注:下文所说“比例”统一表示:图片短边除以长边

2017-03-30 17:49:09 2137

原创 ButterKnife框架原理

大部分Android开发应该都知道@JakeWharton 大神的ButterKnife注解库,使用这个库我们可以不用写很多无聊的findViewById()和setOnClickListener()等代码ButterKnife项目的主页在这里:http://jakewharton.github.io/butterknife/ 简单介绍一下使用方法:public class Exa

2017-03-19 11:38:32 345

转载 Android应用优化小手册

对我们技术从业者而言,很多时候时候不是我们不知道怎么做,而是不知道做什么?今天系统的总结自己关于如何对Android应用进行优化的一些经验,共计八个维度.1.布局优化为什么?Android系统每个16ms发出VSYNC信号,触发对UI的渲染,要想达到界面流畅,必须实现60fps,也就意味着大多数的操作必须在16ms完成.除了上面界面过于复杂导致渲染不能及

2017-03-16 19:47:03 302

转载 Android应用安全开发之浅谈加密算法的坑

Android开发中,难免会遇到需要加解密一些数据内容存到本地文件、或者通过网络传输到其他服务器和设备的问题,但并不是使用了加密就绝对安全了,如果加密函数使用不正确,加密数据很容易受到逆向破解攻击。还有很多开发者没有意识到的加密算法的问题。1、需要了解的基本概念密码学的三大作用:加密( Encryption)、认证(Authentication),鉴定(Id

2017-03-16 18:58:47 596

原创 OpenGL Es 简单创建和使用

Android 第一个OpenGL ES程序  在你的Android应用中用OpenGL ES绘制图形,首先需要有一个容器,最直接的方法是实现GLSurfaceView 和  GLSurfaceView.Renderer。  前者是一个放置图形的View容器,后者用来控制在这个View中如何进行绘制。   GLSurfaceView只是一种选择,比较适合于全屏绘

2017-03-14 09:46:06 722

原创 解决 Android N 上 报错:android.os.FileUriExposedException

解决 Android N 上 安装Apk时报错:android.os.FileUriExposedException: file:///storage/emulated/0/Download/appName-2.3.0.apk exposed beyond app through Intent.getData()1、在AndroidManifest.xml中添加如下代码

2017-03-12 16:13:58 365

原创 fragment和activity之间的区别

首先这里不准备论述fragment和activity的具体定义,用法和概念。只是建立在了解这两个东西的基础上谈区别。在理解二者之间的区别的时候,只需要不断的问自己一个问题,就是fragment能做到的Activity能做到吗?可以做到的话没问题,不可以做到的话,为什么不可以呢?这个为什么就是区别。先来看两者的生命周期,这个不必多说。  1.fragment显

2017-03-10 10:21:05 1251

转载 Picasso和Glide的区别

我们再来看看内存开销图,这次貌似Glide花费了两倍于上次的内存,但是Picasso的内存开销仍然远大于Glide。  原因在于Picasso是加载了全尺寸的图片到内存,然后让GPU来实时重绘大小。而Glide加载的大小和ImageView的大小是一致的,因此更小。当然,Picasso也可以指定加载的图片大小的:Picasso.with(this) .load(“http://

2017-03-10 10:02:54 563

转载 RecyclerView 和 ListView 性能和效果区别

RecyclerView 和 ListView 布局效果的对比RecyclerView 和 ListView 一些常用的功能 和 API 的对比RecyclerView 和 ListView 在 Android L 引入嵌套滚动机制之后的对比有一点需要强调下,文中所有的效果在真机上都是很流畅的,因为录制 GIF 图很容易掉帧,所以特地放慢了操作,千万不要误会成卡顿了啊!布局效果对比

2017-03-10 09:31:09 14583 3

原创 React Native开源项目如何运行

学习任何技术,最快捷的方法就是学习完基础语法,然后模仿开源项目进行学习,React Native也不例外。以其中一个举例子.给大家演示下如何运行开源项目.(前提是你已经搭建好React Native环境了)下载开源项目首先需要找到开源项目 ,比如下面这个.地址: https://github.com/Bob1993/react-native-gank进入github,

2017-03-06 17:52:43 604

原创 从Imageview中获取bitmap

从Imageview中获取bitmap的方式好几种,这是其中一种有效的方式一:通过ImageView获取drawable对象Drawable drawable = imageView.getDrawable();Bitmap bitmap = getBitmap(drawable);二:通过drawable获取bitmap private Bitmap getBitm

2017-03-01 11:10:08 7673

原创 基于Xposed的一款脱壳神器ZjDroid工具原理解析

一、前言本文将介绍Xposed框架实现应用的简单脱壳,其实说是Xposed的作用其实也不是,主要是模块编写的好就可以了,主要是利用Xposed的牛逼Hook技术实现的,下面就先来介绍一下这个脱壳模块工具ZjDroid的原理,因为他是开源的,所以咋们直接分析源码即可,源码的下载地址:https://github.com/halfkiss/ZjDroid 不过可惜的时候他只公开了Java层的代

2017-02-28 09:51:34 3542

原创 Retrofit2.0介绍使用封装

前言时至今日,Android的网络框架不再像之前那么到处都是,随着Google把 HttpClient直接删掉,似乎意味着Android越来越成熟。网络框架中的佼佼者Volley也不再那么光鲜,取而代之的是 Retrofit 和 okHttp。 感觉很像 OnePiece 中白胡子的离去象征着时代的变革,新时代的开始,多弗的垮台象征着七武海制度的取缔一样,不会使用Retrofit

2017-02-27 09:45:42 498

原创 Android屏幕直播方案

项目需求是实时同步Android手机屏幕画面至浏览器。这里有两个挑战,一是Android如何在应用内获得屏幕实时视频流,另一个是如何在浏览器上做视频直播。经过一番折腾,确定了如下的实现方案。期间,我们也实现了手机摄像头的直播。演示效果:演示Android获取实时屏幕画面原理与基础设置Android 5.0版本之后,支持使用MediaProjection的方式获取

2017-02-24 12:14:11 6929 4

原创 直播应用的原理

【一个完整直播app架构】【一个完整直播app技术点】直播音视频知识点概括1.采集视频、音频1.1 采集视频、音频编码框架 AVFoundation:AVFoundation是用来播放和创建实时的视听媒体数据的框架,同时提供Objective-C接口来操作这些视听数据,比如编辑,旋转,重编码1.2

2017-02-24 10:04:22 2410

原创 Android守护进程

一、进程初步了解每一个Android应用启动后至少对应一个进程,有的是多个进程,而且主流应用中多个进程的应用比例较大Paste_Image.png1、如何查看进程解基本信息对于任何一个进程,我们都可以通过adb shell ps|grep 的方式来查看它的基本信息值解释u0_a16U

2017-02-23 12:37:06 1814

原创 Android5,6,7,8新特性

Android 5.0API级别:211. Android Runtime(ART)大多数 Android 应用无需任何更改就可以在 ART 下工作。不过,部分适合 Dalvik 的技术并不适用于 ART。如需了解有关最重要问题的信息,请参阅在 Android Runtime (ART) 上验证应用行为。如存在以下情况,应特别注意:您的应用使用 Java 原生接口 (JNI) 运行

2017-02-22 09:53:54 5563

转载 Android教你如何用程序“手绘”女友

先上图:nancy.gif点子来自于一次情人节的礼物思考,想着能不能不俗套的去送花发红包之类的,再加上妹子也是做技术的,所以就想着搞了一个这个。 这个效果的原理是基于PathView的,可是PathView并不能满足我的需求,于是乎我就开始下手自己修改了。 下面我会一边分析PathView的实现过程,一边描述我是如何修改的(GIF图很多小心流量)

2017-02-21 15:50:44 583

原创 动态调试APK,以宝宝树为例

#####0x01.准备工具1. IntelliJ IDEA2. baksmali3. Androidkiller4. IDA6.65. Fiddler6. 一台Android真机(或者模拟器)7. studio#####0x02.抓包手机连上`wifi`,与电脑处于同一局域网,然后设置好Fiddler,具体步骤不详述。打开`宝宝树孕育6.2

2017-02-21 10:03:32 2149

空空如也

空空如也

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

TA关注的人

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