自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 资源 (1)
  • 收藏
  • 关注

原创 音视频学习链接

音视频学习 (一) C 语言入门音视频学习 (二) C++ 语言入门

2022-03-04 15:36:55 4209

原创 NDK学习链接综合

NDK学习链接综合1、NDK基础2、NDK编译3、NDK crash分析4、NDK应用1、NDK基础1、NDK 编译的三种方式2、在 NDK 开发中引入第三方静态库和动态库3、NDK 开发中 Native 与 Java 交互4、NDK 开发中 Native 方法的静态注册与动态注册5、NDK 开发中的几个重要知识点6、NDK 编程 Java 如何保存 C 或 C++ 对象7、NDK 开发中 Native 方法的静态注册与动态注册8、Android JNI 动态库逆向9、Android N

2022-03-03 20:34:02 2299

原创 java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive

java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but

2018-01-29 14:04:33 839

原创 ActivityManagerService原理分析

一.概述ActivityManagerService是Framework层的核心服务之一,ActivityManagerService是Binder的子类,它的功能主要以下三点:四大组件的统一调度进程管理内存管理二.ActivityManagerService中的重要变量static final int MAX_ACTIVITYS =20;系统允许的最大后台activity的数目stat

2017-08-16 22:12:54 1225

原创 读书笔记之工厂方法模式以及简单工厂模式

工厂方法模式介绍工厂方法模式是创建型模式之一.在任何需要生成复杂对象的地方,都可以用工厂方法模式.比如一款产品有很多种类,如果每一个种类都用new来创建对象,那么就偏离了六大原则,所以就定义一个工厂类,通过这个类来完成产品的创建,这样当有新的产品需要生产时也只需要修改工厂类的代码.工厂方法模式的简单实现1.首先定义产品接口public interface Product{ //产品的方法,

2017-07-28 10:55:01 271

原创 自己封装一个插件化框架

一 概述研究了一下滴滴开源的插件化框架,感觉功能挺强大的,于是就想自己动手也封装一个,不过相对于滴滴是支持四大组件的,我这里就只对activity做了支持.要想知道怎么加载一个插件的activity,就得对activity的启动过程有所了解,如果不懂的可以看一下Activity的启动过程这篇文章.从这篇文章的分析得知,Activity的检测工作是在WMS中进行的,所以我们只要使用占坑的方法,先在清单

2017-07-26 17:49:01 4776

原创 Activity的创建,配置上下文,绘制视图过程

概述在Activity启动过程分析一文中分析到了通过反射创建了activity并且调用了activity的onCreate表示activity启动了,但是我们见到的activity一般都是一个界面,所以这篇文章就继续分析了Activity的视图创建过程.这个过程中涉及到的主要类如下: Activity->用户操作的类 Context-> 负责管理actvity的资源等信息 Window-

2017-07-25 16:54:46 2754

原创 使用Windowmanager给界面添加窗口

添加普通窗口btn.setOnClickListener(new View.OnClickListener() { //创建要显示的Viewfinal TextView tv = new TextView(BezierViewActivity.this); tv.setBackgroundColor(Color.WHITE); t

2017-07-21 11:01:50 1013

原创 Activity启动过程分析

一.概述对着老罗的博客和源码自己梳理了一遍Activity的启动过程,为了方便记忆就将这个过程整理写了下来,整个启动过程涉及到的类主要有Activity,ActivityManagerService,ActivityStack, PackageManagerService,ActivityThread和ApplicationThread.涉及到的进程一般是有2个,如果是启动另外一个应用的acitiv

2017-07-20 16:08:20 1195

原创 Recycleview侧边添加拖拽控件

一.概述 为了满足recycleview数据过多时,能够快速滑动到指定位置,特意自定义了一个控件,用来实现该功能,先看下效果图: 二.创建一个SlideBar类继承View1.重写onMeasue方法: @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { su

2017-07-03 16:54:04 2964

原创 读书笔记之Builder模式

1.Builder模式的定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.2.Builder模式的简单实现public class TimePickerView { private int Color_Submit;//确定按钮颜色 private int Color_Cancel;//取消按钮颜色 private int Color_Title

2017-06-13 17:30:38 370

原创 读书笔记之单例模式

1.单例模式的定义确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例.2.单例模式的使用场景确保某个类有且只有一个对象的场景,避免产生多个对象消耗过多的资源,或者某种类型的对象应该有且只有一个.3.实现单例模式的几个关键点构造函数不对外开放,一般为private通过一个静态方法返回单例对象确保单例类的对象有且只有一个,尤其是在多线程的情况下确定单例类对象在反序列化时不会重新创建对

2017-06-12 14:36:48 289

原创 读书笔记之设计模式的六大原则

1.单一职责原则一个类中应该只封装相同功能的方法,每一个函数只负责一件事情.比如一个下载图片的框架,包含从缓存中加载图片,下载图片等功能.从这个2个功能来看主要是分为2大类,一个是加载图片,一个是做缓存,为了满足单一职责的原则,我们就需要定义2个类来封装这2个功能,一个功能负责加载图片,一个功能负责做缓存.而对于每个类,也要将功能细分到每一个函数负责一件事情,比如缓存的类,就可以分为初始化缓存,将图

2017-06-09 15:42:30 305

原创 Android studio 使用aidl和service进行进程间通信

一.概述 Android的Binder机制可以进行进程间通信,但是Servicemanager这个类不公开,也就是我在自己的应用程序中无法使用Servicemanager的addService将我们自己定义的service注册到binder中去,也无法通过getService获取到对应的Service,那么在我们的应用程序要如何来进行进程间通信呢?利用aidl文件和Service就可以进行通信

2017-06-02 18:10:51 1153

原创 解决Android客户端RSA解密部分乱码的问题

今天在用rsa界面服务端的数据时,碰到了部分乱码的问题,虽然能解密出正确的数据但是前面会多一堆乱码.一开始以为是编码的问题,可是全都设置成了utf-8也是不行,最后的解决方法如下: 在移动端获取解密的Cipher类时要使用Cipher.getInstance(“RSA/ECB/PKCS1Padding”); 在后端使用Cipher.getInstance(“RSA”);来获取.

2017-05-31 15:07:19 4713 2

原创 将library上传到jcenter 中文和特殊字符的解决

在上传的过程中可能会出现javadoc生成失败的问题,在生成javadoc时有检查文档的正确性,像 这种的注释都会导致生成失败,而且由于使用的是Windows系统,默认编码是GBK,所以在上传编译时报了编码的错误问题。所以只要在grade加入下面的下面就可以解决这个问题allprojects { tasks.withType(Javadoc) { //兼容中文 optio

2017-05-25 11:35:04 424

原创 将多个jar包重新打包成一个jar包

我介绍的方法是使用java命令来操作的,所以首先的安装jdk,这个就自己搞定吧.提取jar包 为了将多个jar包打包成一个jar包,首先要将每个jar包的内容提取出来放到一个文件夹下,具体的操作命令就是使用jar xf jar的文件名 比如我的jar放到桌面的一个新建文件夹(2)下,那么就通过cmd进入到这个目录然后输入上面的命令即可 重新打包jar包 也是通过cmd进入到要打包的文件夹目录

2017-05-25 11:13:56 13254

原创 Android studio编译报错:Error:Execution failed for task ':app:transformClassesWithDexForDebug'

Android studio 编译报错:Error:Execution failed for task ':app:transformClassesWithDexForDebug'.> com.android.build.api.transform.TransformException: java.lang.RuntimeException: java.lang.RuntimeException:

2017-05-25 10:41:29 2344

原创 使用mina实现Android长连接

一.概述 android长连接的实现有很多种,最常用的是使用第三方的长连接,比如推送服务的实现.使用第三方的长连接虽然在实现上最简单,但是扩展性缺少最差,要受限于三方的api,所以在这里介绍使用mina来实现android的长连接服务.二.服务端的实现 首先来说说服务端的实现,这里只是举个简单的实例,目的只是告诉大家如何实现.导入需要的jar包 具体的代码实现impo

2017-05-22 16:15:10 4699 2

原创 Android Studio 进行NDK开发入门

一.开发前准备 Android Studio 最好升级到2.2 Jdk1.7 api24 Gradle2.2.2 二.下载NDK和cMake 三.配置 如果是在已经创建好的项目中要进行ndk开发就按如下操作 在这里选择一个份cMakelIsts文件就可以 四.通过案例来实现java调用c代码 1.首先创建一个java类publ

2017-04-28 20:47:12 360

原创 可滑动的横向时间轴

一.概述 为了项目的需求,自定义了一个seekbar可当做时间轴,且是可以支持滑动的.效果图如下: 二.重写onMessure 这里只是简单的处理了以下AT_MOST的情况. @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

2017-04-07 09:41:47 5523 2

原创 支持下拉刷新和上啦加载的SwipeRefreshLayout

一.概述 google提供的SwipeRefreshLayout只具有下拉刷新的效果,而我们平常的需求都是既要有下拉刷新又要支持上啦加载的.一个偶然的机会看一篇利用NestedScrolling机制改造SwipeRefreshLayout,这篇文章详细的讲解了如何让SwipeRefreshLayout支持上啦加载,但是效果有点美中不足,只有加载的圆圈进度条,没有加载错误和到底了的ui显示,于是

2017-04-05 10:55:35 412

原创 颜色渐变的Textview

一.概述 最近在开发中遇到需要让文字显示多种颜色的需求,通过网上搜索发现,google原来就有提供线性渐变的类LinearGradient,通过给画笔设置LinearGradient就可以完成多种颜色渐变的textview.效果图如下: 二.原理package com.betterda.gradienttextview;import android.content.Contex

2017-03-31 11:04:41 3749 1

原创 Python爬虫实战之使用Scrapy爬起点网的完本小说

一.概述 本篇的目的是用scrapy来爬取起点小说网的完本小说,使用的环境ubuntu,至于scrapy的安装就自行百度了. 二.创建项目 scrapy startproject name 通过终端进入到你创建项目的目录下输入上面的命令就可以完成项目的创建.name是项目名字. 三.item的编写 我这里定义的item中的title用来存书名,desc用来

2017-03-23 15:54:34 8148 5

原创 Android-PickerView系列之封装篇(三)

一、概述 这是Android-pickerview系列的第三篇文章,如果是想知道怎么使用这个控件的可以查看Android-PickerView系列之介绍与使用篇(一),想要研究WheelView的原理可以查看Android-PickerView系列之源码解析篇(二),这篇文章主要是讲解一下时间选择器TimePickerView是如何封装的。二、封装 这

2017-03-02 16:03:34 741

转载 仿iOS的PickerView控件,有时间选择和选项选择,并支持一二三级联动,支持自定义样式

http://blog.csdn.net/qq_22393017/article/details/58099486

2017-02-28 13:38:26 708

原创 Android性能优化总结

一.App启动优化 1.必要的初始化要放到application中 2.不是立马需要的且需要的时间较长的最好放到子线程中初始化,减少主线程执行的时间,加快app的启动 3.即使将一些不是必要的操作放到子线程,虽然能提供启动速度,但是当你点击app启动的时候也还是会出现白屏等待的现象,为了解决这个问题我们只需要给第一个启动的activity自定义一个theme即可,将th

2017-01-06 15:40:08 328

原创 Android6.0仿IOS在欢迎页面统一请求权限

一. android6.0以后权限的请求改成了动态请求,不再是在安装的时候统一请求了.这样对用户来说虽然是体验好了,但是却苦了我们开发者,每个危险权限我们都得写一遍权限请求的代码,这样即麻烦,又觉得代码人冗余.我通过2个项目的实践,总结出了仿ios在欢迎页面将需要的权限统一请求了是一种不错的处理方法.先上一张效果图. 这是都允许的情况 这是拒绝的情况 二.为了方便使用

2017-01-04 09:56:31 1909

原创 使用zxing实现二维码的生成和扫描

1.导入core-3.1.0.jar包 2.将zxing包直接导入项目中 3.导入raw下的baidu_beep.ogg 4.导入values下的资源 5.添加相关权限 6.生成二维码 /** * 根据内容生成二维码bitmap * * @param content

2016-12-30 10:05:23 501

原创 着色状态栏

1.5.0以上调用下面的代码就可以完成着色的处理 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {//5.0 以上 activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);//清除半透明效果 act

2016-12-20 09:50:32 400

原创 RxBus和RxManager管理rxJava的生命周期

首先使用rxjava封装了一个Rxbuspublic class RxBus { private static final String TAG = RxBus.class.getSimpleName(); private static RxBus instance; public static boolean DEBUG = BuildConfig.LOG_DEBUG

2016-12-05 15:36:25 2669

原创 极光推送服务接入

1.确认android studio的 Project 根目录的主 gradle 中配置了jcenter支持。(新建project默认配置就支持)buildscript { repositories { jcenter() } ......}allprojets { repositories { jcenter() }}2.

2016-12-01 16:20:48 534

原创 Android6.0 申请权限比较优雅的处理方法

android6.0以后权限的申请改成了动态申请,如果你的targetSdkVersion 大于23且手机系统是6.0以上的就会变成动态申请.为了项目的需求我自己整理了一套权限申请的方法.先上几张图片. 1.这是我第一次运行项目弹出权限请求的界面,我都选择了不允许,然后会通过Snackbar友好的提醒用户需要允许权限 2.当我第二次在点击拍照时,就会先弹出一个Snackbar告诉用户,我需要一些

2016-11-30 15:58:44 12763 2

原创 使用ActivityOptionsCompat动画共享组件的方式实现跳转Activity动画

android5.0以后新增了一种跳转activity的动画,就是使用ActivityOptionsCompat,ActivityOptionsCompat虽然是一个兼容库但是只能保证在5.0以下程序不挂掉,而没有动画效果.先上个效果图. 1.从上面的效果图可以知道我们这个动画是从第一个activity的小图和第二activity的大图共享动画效果所以首先要在xml中分别设置android:tra

2016-11-28 16:20:58 3405

原创 gradle编译异常

1.Error:Execution failed for task ‘:app:transformClassesWithDexForDebug’. > com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.Exe

2016-11-22 14:38:49 560

原创 一个封装android开发常用控件的库

这个库的使用只要在gradle中添加 compile ‘com.betterda:mylibrary:2.2.6’即可库的源码地址这个是我自己在开发中整理的一些常用控件,方便在以后的项目中使用.1.自定义的Toast主要是为了解决在5.0以上用户关闭了通知时无法显示Toast的问题.用法很简单只要在之前使用系统的Toast的地方换成我的包下的Toast就可以了 com.betterda.mylibr

2016-11-21 12:16:47 3237

原创 View的几种滑动方式

android开发中view的滑动很常见,我在这里就来总结一下可以让view滑动的方式.通过view的scrollBy(int dx,int dy)或者scrollTo(int dx,int dy)方法,参数表示要滑动的距离.scrllTo或者scrollBy只能使view的内容滑动.而不能改变view在布局中的位置. 比如一个textview调用srollBy方法只会将里面的内容(文字)滑动.而

2016-11-11 14:40:09 534

原创 Recycleview之setAdapter源码分析

recycleview作为取代listview的新控件,使用率越来越高了,在这之前我都是简单的使用recycleview没有仔细的研究过它,所以我决定从它的源码入手看看它是如何实现的. recycleview的设计非常的解耦,采用设计模式中的适配器模式来管理数据,采用layoutmanager来管理布局和滑动,采用 ItemAnimator来管理item的动画效果,采用 ItemDecora

2016-10-25 15:46:14 2879

原创 viewpager源码分析

viewpager的分析从下面的这个步骤入手:setAdapter-populate-onMeasure-onlayout-onInterceptTouchEvent-onTouchevent-smoothScrolllTo-onpageScrolled. 下面是完整的源码,上面所说的方法都详细的注释了./* * Copyright (C) 2011 The Android Open Sourc

2016-10-20 15:59:14 5000

原创 Scrollview源码分析

分析Scrollview的源码主要从一下步骤开始,构造函数-onmeasure()-onlayout()-draw()-onInterceptTouchEvent()-onTouchevent().按照这个顺序搞懂这几个方法做了些什么就知道Scrollview是怎么实现的了,下面我将我注释过的Scrollview源码贴上,这个几个方法的功能我都注释好了/* * Copyright (C) 2006

2016-10-12 11:31:28 1368

zxing精简包 只有生成二维码功能 54kb

精简版的zxing包,只含有生成二维码的功能,大小只有54kb

2017-12-15

空空如也

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

TA关注的人

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