关于ThreadLocal的理解
先上一个使用ThreadLocal实例的demo,ThreadLocalDemo 实例包含一个ThreadLocal实例。从网上各种信息看到ThreadLocal是线程私有变量。保持了每个变量的副本,其实ThreadLocal不能用于解决多线程共享变量问题。 ThreadLocal...
View ArticleAndroid研发安全2-Activity组件安全(下)
这篇文章是Android研发安全之Activity组件安全第二篇,本文将给大家分享Activity界面劫持方面的预防知识。 什么是Activity劫持...
View Articleandroid中Zxing实现二维码功能的快速集成以及扫描界面的定制
Zxing二维码库是相当丰富。但是我们往往只需要里面的扫码识别以及生成二维码的功能就可以了,所以这次用到了已经抽离出核销代码的框架包 compile ‘com.journeyapps:zxing-android-embedded:3.3.0’,来快速集成开发。比较简单,后面还会有扫面界面的定制,仿微信二维码扫一扫功能。上几个效果图: 扫描中 扫描结果: 接下来我们来实现他。...
View ArticleAndroid ProGuard代码混淆
关于混淆 代码混淆(Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为。代码混淆可以用于程序源代码,也可以用于程序编译而成的中间代码。执行代码混淆的程序被称作代码混淆器。目前已经存在许多种功能各异的代码混淆器。...
View ArticleShader山下(二十)编译指令(Compilation Directives)
Shader中,编译指令分为两种,一种是常规的编译指令,也就是顶点片元着色器(Vetex & Fragment Shader)使用的编译指令,另一种就是表面着色器(Surface...
View ArticleAndroid 用户进程绘制过程
之前在这篇博客中http://blog.csdn.net/kc58236582/article/details/52437855我们分析过应用在ViewRootImpl的drawSoftware函数中完成绘制 下面我们来看下这个函数,它先调用了Surface的lockCanvas获取一个Canvas,然后再调用surface.unlockCanvasAndPost来表示绘制结束。 private...
View ArticleWebRTC视频Android客户端的见解
进入公司之后做了第一个项目就是关于视频的,因为用的是别人提供的sdk,所以说很容易就能实现其中的功能,那么项目结尾的时候就想着不能光会用啊,咱好赖算是个小工程师,起码得知道原理过程吧!那么下面就讲解一下本人对关于WebRTC的视频连接过程的一些讲解:...
View Article仿墨迹天气的折线图控件,效果杠杠滴.
概述: 这个控件难点在于绘图时候的一些坐标计算,大小计算。 自定义一个View来绘制折线图,外面套一层自定义的HorizontalScrollView来实现横向的滚动... 效果图: 代码讲解: 初始化部分代码,初始化一些参数,画笔对象,因为只是个demo所以把高度之类的参数都写死了,你们可以自己改改。 public Today24HourView(Context context) {...
View Article安卓沉浸式讲解
沉浸式的讲解 沉浸式的讲解 Immersive Mode 和 Translucent Bars的区分 沉浸式的实现方案 一Immersive Mode 的实现 第一种使用systembartint 第二种使用通过手动设置window的Tag设置布局文件padding 二纯透明状态栏的实现 另外给大家推荐几个写的好的沉浸式博客...
View ArticleAndroid中的序列化操作
1、概述 对象序列化化后可以传递自定义对象数据,序列化的目的是将对象数据转换成字节流的形式。但是序列与反序列化仅处理Java变量而不处理方法,序列与反序列化仅对数据进行处理。 实现方法: 实现Serializable接口(JDK提供的接口) 实现Parcelable(AndroidSDK提供的接口,优先使用) 二者区别:...
View Article自己动手写一个Android Studio插件
1.介绍 官方文档 在使用Android Studio开发的时候,大部分人都会使用一些插件来提高开发效率,比如: ButterKnife 自动生成注解代码 PermissionsDispatcher 更方便的进行Android 6.0权限处理...
View ArticleiOS基础- Framework的CocoaPods制作
一、创建自己的github仓库 CocoaPods都托管在github上(官方链接为:https://github.com/CocoaPods),所有的Pods依赖库也都依赖github,因此第一步我们需要创建一个属于自己的github仓库。 仓库创建界面如下图: 说明: Repository name 仓库名称,这里写成WZMarqueeView,必填的; Description...
View Article通用定时器PWM输出实验
知识回顾 本节知识需要了解通用定时器原理的前提下进行学习 我们将通用定时器分为四个部分: 1,选择时钟 2,时基电路 3,输入捕获 4,输出比较 本节定时器PWM输出主要涉及到定时器框图右下方部分,即输出比较部分 和上一讲相同,时基时钟来源于内部默认时钟 对此有疑问请参考 : 定时器中断实验 中 定时器时钟选择部分 和 定时器时钟来源部分 什么是PWM 脉冲宽度调制(PWM),是英文“Pulse...
View ArticleAndroid 之Gradle教程
一、什么是Gradle Gradle是一个工具,同时它也是一个编程框架.。可以调用Gradle自带的api编译我们的android工程,打包成apk或aar,也可以在.gradle文件中使用Groovy语言进行逻辑编程。我们在android工程中使用的每个.gradle文件...
View Article安卓所有的权限
访问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限 获取错略位置 android.permission.ACCESS_COARSE_LOCATION,通过WiFi或移动基站的方式获取用户错略的经纬度信息,定位精度大概误差在30~1500米 获取精确位置...
View Article安卓巴士2016全球开发者论坛【深圳站】
安卓巴士2016全球开发者论坛 10月29日【深圳站】 【主办方】安卓巴士(中国最大的安卓开发者社区) (安卓巴士官网:http://www.apkbus.com/) (报名链接:http://www.huodongxing.com/event/6356759044900) 这是一个知识共享的时代 如今的Android开发,已经进入了飞速发展的时代 Android...
View ArticleAIDL使用案例
AIDL简介 AIDL (Android Interface Definition Language) 是一种IDL 语言,用于生成可以在Android设备上两个进程之间进行进程间通信(interprocess communication, IPC)的代码。如果在一个进程中(例如Activity)要调用另一个进程中(例如Service)对象的操作,就可以使用AIDL生成可序列化的参数。 AIDL...
View Article(Unicode) UTF-8与UTF-16之间转换
一、Unicode的由来 1、我们知道计算机其实只认识0101这样的字符串,当然了让我们看这样的01串会比较头晕,所以为了描述简单一般都用八进制、十进制、十六进制表示。 实际上都是等价的。其它像文字图片音视频等计算机也是不认识的,为了让计算机能表示这些信息就必须转换成一些数字,必须按照一些规则转换。 比如:刚开始的时候就有ASCII字符集(American Standard Code for...
View Articleandroid安卓项目开发3级联动实现省州区的选择
废话:公司前段事件,用到Popupwindow底部弹出实现三级联动,当时也是第一次见这个玩意,一脸懵逼。但是经过几天的探索终于实现了,所以写下这篇,对于需要这个功能 的人有所帮助。 正文: 实现3级联动框架有我知道2个,一个比较坑,一个非常简单使用,如果你目前不想去深入研究只想速度完成这个功能的话,那么推荐使用这个: compile...
View Article你真的会写“Hello world!”吗?
标签(空格分隔): 程序人生 “Hello world!”是很多的程序员的第一个程序,不管是什么语言,“Hello world!”总被当作是程序员通向里另一个世界的大门,你真的知道一个“Hello world!”的程序是如何在计算机内部执行的吗? 1.编写一个“Hello world!”并执行 新建一个hello.c...
View Article