程序亦非猿

菩提本无树,程序亦非猿。


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 友链

  • 搜索

OkHttp和Retrofit2学习笔记

发表于 2015-11-23 | 更新于: 2019-02-12 | 分类于 Android | 阅读次数:
字数统计: 101 | 阅读时长 ≈ 1 分钟

前言

阅读全文 »

Android给apk签名那点事

发表于 2015-11-20 | 更新于: 2019-02-12 | 分类于 Android | 阅读次数:
字数统计: 973 | 阅读时长 ≈ 3 分钟

前言

前几天老大的6p一打开应用就奔溃,于是与让我给应用适配6.0.后来最后发布内测版本后,发现又是打开立即奔溃,在确定我代码push之后,找了一下原因,最终发现是梆梆加固搞的鬼.
然后老大又让我去尝试其他加固方案,又因为加固后又需要重新加固,所以就有了这篇笔记.

阅读全文 »

Activity的生命周期和启动模式

发表于 2015-11-20 | 更新于: 2019-02-12 | 分类于 Android | 阅读次数:
字数统计: 212 | 阅读时长 ≈ 1 分钟

Android开发艺术探索笔记

任玉刚所写,勘误

记录一些笔记

阅读全文 »

我也开始面试人了

发表于 2015-11-19 | 更新于: 2019-02-12 | 分类于 Android | 阅读次数:
字数统计: 425 | 阅读时长 ≈ 1 分钟

前言

今天老大让我去面试,呵呵,入行1年多了,以前只有被别人面试的份,第一次面试,还是小紧张的.

第一个,两年的经验.
一看两年的经验,比我多,怎么办?
我尽量地往深入的地方问,但是结果答得非常模糊,快到了问什么什么不知道的境界.
然后,开始问他的工作经历,几个问题下来,感觉他平时工作的态度就是遇到问题就百度,解决了就万幸,也不深入去了解.
而且对新的知识一点都不了解,AndroidDesign,MaterialDesign什么都不了解.

反正,给我的感觉是:两年经验,就这水平?

阅读全文 »

厦门旅游计划

发表于 2015-11-02 | 更新于: 2019-02-12 | 分类于 人生路上 | 阅读次数:
字数统计: 772 | 阅读时长 ≈ 2 分钟

前言

初步计划:

2015.11.4-11.8日

阅读全文 »

Fragment学习笔记备忘

发表于 2015-11-02 | 更新于: 2019-02-12 | 分类于 Android | 阅读次数:
字数统计: 1.5k | 阅读时长 ≈ 6 分钟

前言

// todo

阅读全文 »

Touch事件分发

发表于 2015-10-29 | 更新于: 2019-02-12 | 分类于 Android | 阅读次数:
字数统计: 744 | 阅读时长 ≈ 3 分钟

前言

touch事件分发乃自定义View必学技能~

阅读全文 »

IntentService教给我什么

发表于 2015-10-24 | 更新于: 2019-02-12 | 分类于 Android | 阅读次数:
字数统计: 1.1k | 阅读时长 ≈ 5 分钟

IntentService

前几天学习了Service,是时候来学习一下IntentService了.

一如既往,先看下官网介绍:

IntentService is a base class for Services that handle asynchronous requests (expressed as Intents) on demand. Clients send requests through startService(Intent) calls; the service is started as needed, handles each Intent in turn using a worker thread, and stops itself when it runs out of work.
This “work queue processor” pattern is commonly used to offload tasks from an application’s main thread. The IntentService class exists to simplify this pattern and take care of the mechanics. To use it, extend IntentService and implement onHandleIntent(Intent). IntentService will receive the Intents, launch a worker thread, and stop the service as appropriate.
All requests are handled on a single worker thread – they may take as long as necessary (and will not block the application’s main loop), but only one request will be processed at a time.

简单总结一下:
service的子类,用于处理异步请求,并且在工作线程按顺序处理请求,工作完后自己停止.
使用也很简单,继承IntentService,实现onHandleIntent(Intent)方法即可.
特点:

  1. 与Service不同,IntentService是起线程处理任务的
  2. 自带队列,每个请求都会排队
  3. 任务完成自己会调用stopSelf结束,无需我们操心
    阅读全文 »

Service学习笔记

发表于 2015-10-21 | 更新于: 2019-02-12 | 分类于 Android | 阅读次数:
字数统计: 2.5k | 阅读时长 ≈ 9 分钟

Service

Service,四大组件之一,是一个可以在后台执行长时间运行操作而不使用用户界面的应用组件。服务可由其他应用组件启动,而且即使用户切换到其他应用,服务仍将在后台继续运行。 此外,组件可以绑定到服务,以与之进行交互,甚至是执行进程间通信 (IPC)。 例如,服务可以处理网络事务、播放音乐,执行文件 I/O 或与内容提供程序交互,而所有这一切均可在后台进行。

但是必须要提的是,虽然说是后台,但是Service运行在主线程!
PS:Service的官方文档有中文翻译了!!真是个大好的消息!

生命周期

跟Activity类似,service也有自己的生命周期,但是简单了一些.
service_lifecycle

Service的基本使用

上面的生命周期已经提示到了,使用Service有两种方式,启动/停止,绑定/解绑,一一对应:

  1. startService stopService(启动)
  2. bindService unbindService(绑定)
  3. 还有一种就是即调用start,又调用bind(又启动又绑定)

这几个方式都有什么区别呢?
不急,咱慢慢来,一一解答.

阅读全文 »

Android群英传笔记

发表于 2015-10-20 | 更新于: 2019-02-12 | 分类于 Android | 阅读次数:
字数统计: 1.1k | 阅读时长 ≈ 4 分钟

Android群英传

前言

医生写的,适合进阶,不适合初学者,在这里记录一下自己所学到的知识点.

本人是奔着自定义的相关知识点来的,所以对这方面的知识点有所侧重.

第三章

  1. 整个界面的控件形成一个控件树,上层控件负责下层子控件的测量与绘制,并传递事件,并且每个控件树的顶点都有一个ViewParent对象,所有交互事件都由它控制
  2. findViewById在控件树中已深度优先遍历来查找对应元素.
  3. 每个Activity都包含一个Window对象(通常是PhoneWindow),它将DecorView设为整个应用窗口的根View
  4. requestWindowFeature()方法一定要在调用setContentView之前才有效.
  5. onResume之后,系统才将DecorView添加到PhoneWindow并显示.
  6. MeasureSpec,一个32位的int值,高2位为测量的模式,低30位为测量的大小(位运算提高并优化效率)
  7. EXACTLY 精确模式, 具体值/match_parent
  8. AT_MOST,最大值模式—wrap_content,表示子控件不允许超过该大小
  9. UNSPECIFIED,想多大多大,通常用于自定义View
  10. View默认的onMeasure只支持Exactly,可以响应具体值和match_parent,所以自定义View如果要支持wrap_content则需要重写onMeasure
  11. 通过MeasureSpec.getMode和getSize方法获取测量模式与大小.
  12. 最终要setMeasuredDimension(width,height)完成测量
  13. Canvas的bitmap与canvas是紧紧联系在一起的,这过程成为装载画布
  14. 该bitmap存储所有绘制在Canvas上的像素信息(即canvas.drawXXX()都发生在该bitmap上)
  15. mTouchSlop = ViewConfiguration.getScaledTouchSlop()

第四章

  1. 使用viewholder提高效率
  2. 设置显示第几项setSelection(int n),smoothScrollBy(distance,duration),smoothScrollByOffset(offset),smoothScrollToPosition(index)
  3. listview.setEmptyView(view)处理空数据
  4. 弹性ListView实现方法:重写overScrollBy(..int maxOverScrollY),重新赋值参数maxOverScrollY即可

第五章

  1. 屏幕最左上角顶点作为Android坐标系的原点

  2. getLocationOnScreen(int location[])获取在Android坐标系中的位置

  3. ViewGroup.MarginLayoutParams更方便

  4. 通过getLayoutParams可获取LayoutParams对象

  5. ViewDragHelper.smoothSlideViewTo(view,x,y)

  6. ViewCompat.postInvalidateOnAnimation(view)

第六章(todo)

  1. canvas.save()保存画布,canvas.restore()将我们在save之后绘制的所有图像与save之前的图像进行合并(似PS中的合并图层)
  2. canvas.translate(x,y)将原点(0,0)移动到(x,y)并以新的点作为原点
  3. canvas.saveLayer(),saveLayerAlpha()将一个图层入栈,并且后面的操作都发生在这个图层
  4. restore(),restoreToCount()将一个图层出栈,把图层上的图像绘制到上层Canvas上
  5. ColorMatrix,一个4X5的数字矩阵,处理色彩效果.
  6. ColorMatrix.setRotate(int rgb,int value)设置色调,0,1,2分别对应RGB
  7. 饱和度(饱和度为0时,图像就变成灰度图像了)colorMatrix.setSaturation(float sat)
  8. 亮度(亮度为0时,图像就全黑了)colorMatrix.setScale(float rScale, float gScale, float bScale,float aScale)
  9. 矩阵的乘法(将矩阵的作用效果混合,从而叠加处理效果):postContact
  10. 使用ColorMatrix,paint.setColorFilter(new ColorMatrixColorFilter(colorMatrix))接着canvas.drawxx(...,paint)

6.6 Android图像处理之图形特效处理

  1. 变形矩阵Matrix,一个3X3的矩阵,
    |A B C|
    |D E F|
    |0 0 1|
    初始为:
    |1,0,0|
    |0,1,0|
    |0,0,1|
  2. Matrix的四类变换:
  • 平移 set.translate 由CF控制
  • 旋转 set.rotate 由ABCD共同控制
  • 缩放 set.scale 由AE控制
  • 错切 set.skew 由BD控制
  1. pre()和post()提供矩阵的前乘和后乘运算,两者不相同(因此,矩阵不满足乘法交换律)
  2. drawBitmapMesh(P144)

6.7画笔特效处理

  1. PoterDuffXfermode 最好关闭硬件加速

  2. Shader着色器,渲染器,用来实现一些列的渐变,渲染效果

  • BitmapShader 位图Shader
  • LinearGradient 线性
  • RadialGradient 光束
  • SweepGradient 梯度
  • ComposeShader 混合
  1. SurfaceView 适用于频繁更新或刷新时数据处理量比较大
  2. lockCanvas()获取Canvas,但是需要drawColor清屏
  3. unlockCanvasAndPost(mCanvas)提交canvas的内容(最好放在finally代码块中)

第七章

  1. 视图动画,优点:简单,缺点:不具备交互性
  • AlphaAnimation
  • RotateAnimation
  • TranslateAnimation
  • ScaleAnimation
  • AnimationSet
    ​
  1. 属性动画
  • ObjectAnimator 单一属性
  • PropertyValuesHolder 多个属性结合
  • ValueAnimator
  • AnimatorSet
    ​

Q&A(todo)

1
2
3
4
5
6
7
8
9
10
void methodA(){
Object object;
object = new Object();
}

void methodB(){
Object object;
object = new Object();
object = null;
}

Q:methodB 中的最后一行是否会让object的堆内存回收掉?还是说依然要等GC?

A:要等gc的,gc的时候 会去找对象是否还有ref 如果没有的话 才清除 你=null只是清除了ref

1…91011…15
程序亦非猿

程序亦非猿

144 日志
11 分类
101 标签
GitHub
0%
© 2015 — 2021 程序亦非猿 | Site words total count: 122.7k
由 Hexo 强力驱动
|
主题 — NexT.Gemini v5.1.4
人次 次