- 博客(12)
- 收藏
- 关注
原创 理解PhotoView的核心,以双击事件为例
核心对于一个ImageView或者说View来说,view的大小是不变的,那图片如何实现大小的变化呢?答案就是Matrix。 Matrix的定义:字面意思是矩阵,在Android中表示使用矩阵的方法来对图片进行变换。可以略微想象一下,图片有很多个像素点,每个像素点都有它的值,将图片看作一个矩阵,那么对图片进行旋转,缩放实际上就是对矩阵进行变换。Android对这个变换过程封装进了Matrix类。
2016-06-02 12:27:42
1861
原创 【日常】列表页优化历程
记录一下项目中列表页优化过程。页面布局第一个关注的是列表页中item的布局层数。布局的层数越多,视图树的深度就越大,会增加测量和布局的时间。具体优化的方法是:使用RelativeLayout代替LinearLayout布局,在使用include来引入布局的时候,一定的情况下可以使用merge标签来减少一层viewgroup。使用viewstub,有些布局可能暂时被隐藏,可以使用setVisiab
2016-04-30 00:51:08
563
原创 【非日常】AndroidStudio,opncv,ndk,jni,人脸识别示例程序
【非日常】AndroidStudio,opncv,ndk,jni,人脸识别示例程序毕设要做人脸识别。在网上查了资料,决定使用AS+NDK+JNI+OpenCV完成。于是就在坑摸爬滚打了几天。今天总算把OpenCV里的人脸识别示例程序运行起来了。现在的情况是:熟悉android,c/c++以前学过基础,没有在项目中使用过,opencv没有碰过。几个概念NDK提供编译打包等工具,是一个工具的集合。提供
2016-03-22 16:27:13
3283
原创 Android使用Fiddler抓包
【日常】使用Fiddler抓包知乎上看到一个问题是,现在有什么有趣的api,赞最多的答案是自己去抓 =。= 那就抓一下吧 Fiddler 想到了费德勒 -。-原理Fiddler使用本地127.0.0.1代理。可以设置代理的浏览器和应用都可以监测。准备安装Fiddler -。-废话设置可以远程连接(为了抓app的包)设置https(如果要抓取https的话)安装官方下载地址: 下载地址下一
2016-01-19 14:17:50
713
原创 【非日常】Android事件体系
先提几个问题,然后去找找答案。首先要知道的是,Android的View的构成是树型的。view提供了setOnClickListener()方法,和setOnTouchListener()方法给我们设置监听,哪个先执行view传递的是什么?view(区别于viewGroup)中的touch事件是如何处理的?viewGroup是如何传递事件的?设置的两种监听谁先执行?以TextView为例,
2016-01-17 22:39:54
413
原创 研究下EventBus
EventBus用法很简单,但是想想他是怎么实现各个组件之间的通信的呢?是如何在不同的线程中实现调用的呢?不是很明确呀,那就看看源码吧。涉及的东西EventBus的作用EventBus的使用方法EventBus实现原理,结合源码解析。为什么要写作用和使用方法?这些不是官方文档上都有么。我感觉过一遍可以帮助理解源码,并且可能get到不容易注意到的功能,so。EventBus的作用simpli
2016-01-04 23:06:14
334
原创 在异步线程中使用主线程的handler
Android如何在异步线程中调用主线程的handlerAndroid的线程分为两种,一种是主线程,也叫UI线程,一种是异步线程。更新UI的操作只能在主线程中进行。但是更新UI有时是在进行网络请求等耗时操作之后。这些操作需要在异步线程中进行。 通过以下方法可以实现在异步线程里创建一个主线程的handler。btn_lin.setOnClickListener(new View.OnClickLis
2015-12-27 20:10:33
826
原创 RecyclerView+SwipeRefreshLayout使用细节
使用RecyclerView+SwipeRefreshLayout时出现了一些问题当连续快速下滑触发SwipeRefreshLayout时,SwipeRefreshLayout的浮标出现了卡顿或停止转动的现象。这时要设置RecyclerView的setNestedScrollingEnabled(boolean enabled),设置为false,取消嵌套滑动,即当RecyclerView接收到滑
2015-11-25 22:01:36
794
原创 排序算法总结(上)
排序算法总结 最近秋招,遇到了好多排序算法的题目,这两天看了一些常用的排序算法,那就总结一下咯。(算法均由java实现) 参考文章点这里–排序算法总结排序算法总结冒泡排序选择排序冒泡排序从大一就开始冒泡了oO~原理:冒泡排序从本质上讲是一种交换值的排序,把“正确的值”和“错误的值”进行交换。为什么叫冒泡呢?想象一下每次都把较大的值往末端放,就好像一个泡泡慢慢往上浮。 趟数:n-1
2015-09-13 14:11:09
369
原创 安卓实现2048
git地址:http://git.oschina.net/yccc/yc_2048/tree/master/yc_2048 第一步:根据屏幕的宽,画16个小正方形(textview)。首先,利用DisplayMetrics获取屏幕的宽度,然后计算每个小方块的宽度,再利用LayoutParams动态添加textview。基本思路就是这样。起初想了各种其他方法,都不能达到适配各种屏幕的效果,经过一些挣
2015-05-19 22:35:34
864
原创 viewpager+fragment实现滑动效果
viewpager+fragment实现滑动效果 基本步骤: 1.生成fragment 2.将fragment对象写入ArrayList中 3.新建ViewPaper对象 4.在布局文件中加入ViewPaper标签 5.重写FragmentPagerAdapter 6.新建FragmentPagerAdapter对象,将 getSupportFragmentManager()和Arra
2015-04-09 17:58:21
624
原创 Intent机制
Intent存在的意义:降低组件(同一程序或不同程序)间的耦合性,完成组件之间的通讯。Intent对象:一个Intent对象是一个信息捆,里面记录了对这个Intent感兴趣的组件的信息。Intent对象包含的信息:(1)组件名字(2).动作(3).数据(4)类别(5)附加信息(6)标志解析Intent对象:1.显式Intent:通过名字指定目标组件,因为通常
2015-03-20 09:26:51
662
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人