自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(74)
  • 资源 (2)
  • 收藏
  • 关注

原创 Android----使用giflib实现高效加载gif图片控件

前言该篇只是记录一下利用giflib来加载gif图片的使用,主要涉及知识:C/C++基础,CMake编译、gif格式,本文不做详细介绍。Gif格式可以参数:https://blog.csdn.net/wzy198852/article/details/17266507原理使用giflib(Android源码工程里有)加载gif文件,并解压每帧对应的图像信息,通过字节拷贝的方式替换Java层的Bitmap实例对应的内存里的字节,以达到在同一块内存空间渲染不同图片信息的效果,由于整个过程主要.

2020-11-18 14:41:32 1110

原创 Android---高效实现增量更新

原理获取文件差异:遍历两个字节文件old和new,比对每个字节的差异,并记录差异字节的文件索引,然后把差异的字节内容和索引记录到一个差异文件patch里。合并差异:解析上面生成的patch文件,根据记录差异的索引和内容,修改或添加到old文件,修改后的old文件的内容就跟new文件的一样了。重新安装apk:把合并后的apk文件重新安装后,这样就实现了增量更新的功能。这样做的好处是不管你修改的是java代码,还是资源文件,还是代码混淆等都能正确的合成(前提是生成差异文件和合并差异文件时没出错)

2020-11-13 12:07:07 249

原创 Android简单的资源分离方案----动态加载外部资源框架

前言资源分离顾名思义就是把资源(通常是图片)从主工程里抽出来到单独的一个工程或者模块,主工程通过网络或者sd卡等获取到资源apk包,然后动态加载资源apk包里的资源。它的优点有:1、减少主apk包的文件大小;2、动态换肤;缺点:1、资源无法预览;2、额外的性能消耗原理接手AppCompatActivity对View的创建过程,解析自定义属性动态加载资源apk包对应的资源,最后设置到View对应的属性上。查看源码可知,AppCompatActivity.setContentView()加.

2020-11-07 17:51:53 761

原创 Android热修复/热更新的简单实现-----dex插桩方案

原理先说一下Java的主动引用,主要场景有:1、遇到new,getstatic,putstatic,invokestatic这4条字节码指令时,类的class如果没有被加载会先被ClassLoader加载到内存,然后才能创建对象,读取或设置静态字段,调用静态方法等。2、反射,Class.forName()3、子类初始化前会先初始化父类4、包含main方法的类,虚拟机启动时会先初始化该类5、使用jdk的动态语言支持时每个class要使用时,也就是主动引用时会先通过ClassLoader把.

2020-11-04 00:52:51 1145 1

原创 Android---自定义简单的ORM框架

前言本案例只是一个简单针对Android sqlite数据库的ORM实现,主要使用了Java的注解和反射机制。本文只是提供一下实现的思路,后续可能会实现一个基于APT技术的,有兴趣的读者可以参考之前写过一篇文章:Android--仿ButterKnife自动绑定View实例以及点击事件之二(主要利用APT、JavaPoet技术)。实现前需考虑的几个问题:1、应该定义哪些注解?本文只定义的4个基本的注解,分别是:@DbTable:添加在JavaBean类上,表示映射对应数据库表。如果没有.

2020-11-02 14:46:09 233

转载 Linux VM虚拟机CentOS 8磁盘分区扩容(转载)

https://blog.csdn.net/qq_43743460/article/details/104463116

2020-10-31 15:10:06 214

原创 模拟Android的事件传递机制

本文参考源码,简单模拟了View事件的传递过程。package com.log.touchevent;import com.log.touchevent.listener.MotionEvent;import com.log.touchevent.listener.OnClickListener;import com.log.touchevent.listener.OnTouchListener;public class View { protected String name;

2020-10-27 14:31:11 61

原创 Android--仿ButterKnife自动绑定View实例以及点击事件之二(主要利用APT、JavaPoet技术)

前言本文是前一篇的延续,阅读需要提前了解JAVA的APT技术、第三方代码生成框架JavaPoet。Android--仿ButterKnife自动绑定View实例以及点击事件之一(主要利用反射技术)下面有几篇写的很不错参考文章,本文也是参考这些文章或官网:https://www.jianshu.com/p/b5be6b896a1a?utm_campaign=haruki&utm_content=note&utm_medium=seo_notes&utm_sourc.

2020-10-24 14:53:06 182

原创 Android--仿ButterKnife自动绑定View实例以及点击事件之一(主要利用反射技术)

前言要读懂本文需要有自定义注解、反射以及Java动态代理的基础。代码里有注释,暂时不做过多的分析,后面有时间再补充。一、定义注解:import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;@Retention(Retentio.

2020-10-24 14:14:12 199

转载 关于安卓7.0版本以上charles无法抓取https包的问题解决办法

结论:由于安卓7.0后,用户安装的证书不被信任,导致无法使用charles等抓包工具对https的请求包进行正常的解析,所以直接用安卓7.0以下的手机来进行抓包,或者最简单的就是用模拟器!前言解决这个问题比较复杂,需要花费大量时间来解决这个问题,如果没有耐心是不能成功的.可以说这里解决的每一步都有坑问题描述在安卓7.0及以上的版本,即使安装了charles证书,也会导致抓取https包失败如图https包出现unknow报错为什么这样Android6.0网络默认...

2020-10-22 20:48:48 3228 1

原创 Android--简单的图片三级缓存工具类

ImageUtils.javaimport android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Environment;import android.util.LruCache;import org.xutils.common.util.MD5;import java.io.File;import java.io.FileInputStream;import java.io..

2020-10-22 19:10:40 129

原创 Android造轮子---联系人快速索引

联系人快速索引,可以根据右边索引导航来定位具体拼音首字母的数据,下面是效果图:实现主要使用三个View:1、ListView:负责展示联系人数据2、右边的索引IndexView(自定义View):负责处理用户点击或滑动事件,根据事件坐标值定位相应的字母索引,并通知索引事件监听者3、正中间的当前索引拼音首字母提示ViewIndexView实现原理:1、根据控件宽度和高度计算出每个字母所占的区域大小2、通过Paint.getTextBounds()计算出每个字母本身的宽高3、..

2020-10-09 15:55:11 297

原创 Android6.0动态处理权限BaseActivity封装

import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.content.pm.PackageManager;import android.os.Build;import androidx.annotation.NonNull;import androidx.appcompat.app.AppCompatActivity;i.

2020-10-03 12:10:57 216 3

原创 使用RandomAccessFile实现多线程文件拷贝(多种方式进行性能对比)

import sun.misc.Cleaner;import sun.nio.ch.DirectBuffer;import java.io.File;import java.io.FileNotFoundException;import java.io.IOException;import java.io.RandomAccessFile;import java.nio.MappedByteBuffer;import java.nio.channels.FileChannel;impor.

2020-09-30 18:31:26 591

原创 Android的Handler处理消息机制(Looper、MessageQueue)

撸了一下Android的源码,把Handler、Looper、MessageQueue以及Message的关系稍微捋了一下,发现其实只要明白了ThreadLocal的原理,就能明白为什么通过Handler发送Message就能在UI线程(主线程)更新UI了。先说一下它们的执行流程:Handler发送Message给MessageQueue,每个Looper里都有一个MessageQueue;调用Looper.loop()之后,Looper会不断的去MessageQueue里拿Message出来,然后

2020-09-29 02:05:23 166

原创 Android造轮子---支持网络图片的ImageView

本来打算增加支持本地缓存以加速图片加载速度,以及支持默认图片还有图片加载失败图片显示等功能,由于本人懒,所以搁置!因为都是测试时用的,所以功能写的很简单也不完善,仅供参考!直接上代码:import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Handler;import android.os.Messag.

2020-09-28 23:17:15 113

原创 Android造轮子---表单数据提交(支持多文件上传)

因为都是测试时用的,所以功能写的很简单也不完善,仅供参考!直接上代码:import android.os.Handler;import android.os.Message;import android.util.Log;import java.io.ByteArrayOutputStream;import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStream;import java.

2020-09-28 23:05:23 276

原创 Java实现压缩和解压zip和jar

package com.lol.io;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;...

2018-07-12 11:20:27 6518 2

转载 [总结]FFMPEG视音频编解码零基础学习方法

在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFMPEG进行视音频编解码的人,有的已经是有多年经验的“大神”,有的是刚开始学习的初学者。在和大家探讨的过程中,我忽然发现了一个问题:在“大神”和初学者之间好像有一个不可逾越的鸿沟。“大神”们水平高超,探讨着深奥的问题;而初学者们还停留在入门阶段。究竟是什么原因造成的这种“两极分化”呢?最后,我发现了问题的关键:FFMPEG难度比较大,

2016-06-05 22:07:04 944

转载 ffmpeg yasm not found, use --disable-yasm for a crippled build

yasm是汇编编译器,因为ffmpeg中为了提高效率用到了汇编指令,比如MMX和SSE。解决这个问题方面有两个:1、在网上下载一个yasm.exe并安装在mingw/bin下面,编译代码时你注意看,会发现asm后缀的文件用的编译器是yasm,c文件用的是gcc;2、不使用汇编指令,在配置时加上,即./configure  --disable-yasmyasm下载地址

2016-02-09 23:39:34 503

原创 Eclipse获取android更新信息失败的解决问题(换代理服务器)

1.打开C:/WINDOWS/system32/drivers/etc中的hosts文件在最后一行添加:74.125.237.1 dl-ssl.google.com2.如果仍然链接失败,就打开SDK Manager.exe,选中tool栏,点Android SDK Manager ,在下面Force https://...sources to be fetched using ht

2015-11-20 13:48:16 1037

转载 armv6, armv7, armv7s的区别

这两天遇到静态库不支持armv7s的问题,所以顺道了解和总结一下几个arm架构的一些基本区别。 ARM是微处理器行业的一家知名企业,arm处理器以体积小和高性能的优势在嵌入式设备中广泛使用,几乎所有手机都是使用它的。armv6, armv7, armv7s是ARM CPU的不同指令集,原则上是向下兼容的。如iPhone4S CPU支持armv7, 但它同时兼容armv6,只

2015-11-05 00:24:46 460

转载 Mac下同时安装多个版本的JDK

DK8 GA之后,小伙伴们喜大普奔,纷纷跃跃欲试,想体验一下Java8的Lambda等新特性,可是目前Java企业级应用的主打版本还是JDK6, JDK7。因此,我需要在我的电脑上同时有JDK8,JDK7,JDK6。JDK6和JDK7主要是做一些产品代码的验证,以及自己玩一些开源项目,JDK8则纯属尝鲜,谁叫咱是喜新厌旧的程序员呢。  目标 在命令行下,可以通过命令'jdk6', 'jdk

2015-11-03 18:45:02 754

原创 Cocos2dx 通过Java代码调用C++

通过Java代码调用C++//在java类中定义一个方法,用于提供给java调用C++ private static native void xxxxxx(int value);在.cpp文件中作如下实现:extern "C"{ //方法名与java类中的包名+方法名,以下划线连接 void Java_com_xxxx_xxxx

2015-11-02 20:16:27 560

转载 Xcode的Architectures和Valid Architectures的区别,

目录[-]Xcode的Architectures和Valid Architectures的区别ArchitecturesValid Architectures原因解释如下:参考1:所有IOS设备详情列表 List of iOS devices - Wikipedia, the free encyclopedia参考2:iOS 7: 如何为iPhone 5S编译64位应用。参

2015-10-31 12:27:37 499

原创 xcode集成Vungle IOS3.2.0版本视频广告的坑

坑1:需要增加Webkit.framework这个框架的依赖,属性设为:optional就可以。如果不增加这个会出现让你scream再久也没人管你的bug,bug如下:Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_WKWebView", referenced from: l_OBJC_$_CATEGORY

2015-10-31 10:58:05 2444 1

转载 Xcode 7 缺少 *.dylib库的解决方法

Xcode7中 Link Binary With Libraries 没有 *.dylib库,只能找到对应的 *.tbd,但不能代替使用,通过查找资料,尝试后得到以下两种解决方法。1.Link Binary With Libraries 手动添加首先点击 “+”显示搜索添加页面,点击 Add Other出现文件目录页面,快捷键 CMD+Shi

2015-10-30 12:41:06 491

原创 cocos2dx 利用CCOrbitCamera实现扑克牌翻牌效果

【注意】CCSpriteBatchNode不支持CCOrbitCamera动画。如果不需要用到CCSpriteBatchNode的话可以用下面这种方式:#include "HelloWorldScene.h"#include "SimpleAudioEngine.h"using namespace cocos2d;using namespace CocosDenshion;

2015-10-17 01:12:33 1203

原创 简单但比较高效的解决:随机获取N个数字,这些数字在指定的范围内,获取的数字不能重复

在做游戏的时候遇到这个问题:随机指定范围的数字,但不能重复。一开始的想法是:用一个双循环,直接用【rand()%范围数字】的方法得到一个数字,然后和数据结构里面的已有元素进行比对,如果重复就不添加,退出内层循环,然后一直不断判断知道,添加到数据结构里的数量符合要求。代码如下:void getRandomNum(int range, int count){ vector vec;

2015-10-13 15:01:08 1344 1

转载 Linux GCC常用命令

1简介GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言;它现在还支持 Ada 语言、C++ 语言、Java 语言、Objective C 语言、Pascal 语言、COBOL语言,以及支持函数式编程和逻辑编程的 Mercury 语言,等等。而 GCC 也不再单只是 GNU C 语言编译器的意思了,而是变成了 GNU Comp

2015-09-21 16:28:15 355

原创 "std::basic_stringbuf<char, std::char_traits<char>, std::allocator<char> >::str() const"问题的解决办法

今天用cocos2d-x 3.6版本创建了一个新的工程,用xocde编译后出现了N多个链接错误,错误如下:Undefined symbols for architecture x86_64:  "std::basic_stringbuf, std::allocator >::str() const", referenced from:      umeng::J

2015-05-16 19:58:43 10960 1

原创 Window 7(64位)配置Cocos2d-x-3.6环境

1、去cocos2d-x官网下载3.6版本的压缩包,解压到一个英文路径下。2、下载并安装以下软件(具体软件自行百度):   (1) Visual Studio2012或者2013   (2) 安装java 1.6以上   (3) 带有Android ADT的eclipse(adt-bundle-windows-x86_64-20140702)   (4) python 2.7.

2015-05-07 00:41:38 2783

转载 C++的cout高阶格式化操作

这篇文章主要讲解如何在C++中使用cout进行高级的格式化输出操作,包括数字的各种计数法(精度)输出,左或右对齐,大小写等等。通过本文,您可以完全脱离scanf/printf,仅使用cout来完成一切需要的格式化输入输出功能(从非性能的角度而言)。更进一步而言,您还可以在、上使用这些格式化操作,从而代替sprintf和fprintf函数。为方便描述,下文仅以cout为例进行介绍。

2015-03-29 14:29:58 545

转载 cocos2d-x Tests讲解四:box2dTest(物理引擎)

一、box2d基础知识1、关于Box2D 是一个用于游戏的 2D 刚体仿真库。从游戏的视角来看,物理引擎就是一个程序性动画(procedural animation)的系统,而不是由动画师去移动你的物体。1、核心概念 刚体(rigid body)一块十分坚硬的物质,它上面的任何两点之间的距离都是完全不变的。形状(shape)一块严格依附于物体(body)的 2D 碰撞几何结构(co

2014-11-17 18:48:23 1443

原创 cocos2d-x的eclipse工程解决jni目录下main.cpp文件编译错误的问题

Eclipse工程里面还会有许多警告,但是,这是因为eclipse对于解析c++头文件的能力并不强大。为了消除这些警告,我们又需要设置一下项目设置。(右键点工程,然后选择Properties),把Code Analysis部分的warnings关闭,如下图所示: 然后点击Apply和OK,这时,你就得到一个工程可以在eclipse里面进行编辑了。

2014-11-14 15:19:25 1540

原创 Cocos2d-x 怎样支持多点触摸(IOS上多点失灵的解决方法)

怎样支持多点触摸这个问题经常被问到。多点触摸特性在cocos2d-x的第一个版本中,iOS平台和安卓平台就都可用了。但是在iOS中,苹果默认屏蔽掉了这个特新,并且提供api手动支持多点触摸。苹果请参照 cocos2d-x/samples/Cpp/TestCpp/proj.ios/Classes/testAppDelegate.mm, 39 行[__glView se

2014-11-11 23:07:13 1450 1

原创 C++中 char*,char[],string,CString转换

1. char*-------->char[]-------------------------------------------char* addr;char[20] Address;strcpy ( Address, addr);*********************************string ---------->CString----------

2014-11-11 16:34:22 649

转载 Bitbucket使用方法

转自:Bitbucket使用方法一、软件及SSH keys:由于我的Bitbucket账号的邮箱及用户名与Github相同,所以SSH Public Keys可以用Github的,登录Bitbucket,悬浮在用户名boliquan那里点击“Account”,点击左边的“SSH keys”即可进行设置 软件不用再安装,仍然使用Github的二、创建一

2014-11-05 02:41:57 1295

原创 【IOS和Android】Cocos2d-x 集成Facebook分享功能

(二)集成Facebook分享:1、

2014-11-03 17:27:48 7293 4

原创 【IOS和Android】Cocos2d-x 集成微信分享功能

第一:集成微信,

2014-11-03 12:23:00 8243 9

PhysicsEditor形状编辑器最新Mac 破解版1.0.10,支持box2d

PhysicsEditor形状编辑器最新Mac 破解版1.0.10,支持box2d

2014-07-17

Oracle 10g 10.2.0.3 JDBC_ojdbc14.jar

Oracle 10g JDBC驱动,方便使用Oracle数据库开发的程序中使用Blob和Clob对象

2010-08-17

空空如也

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

TA关注的人

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