- 博客(373)
- 资源 (3)
- 收藏
- 关注
原创 《Android开发艺术探索》笔记目录
该笔记以《Android开发艺术探索》为基础,结合Android 9.0代码和官方文档,修正了原书中表述不明确和过时的部分,同时加入了大量的个人理解。13章,14章,15章是总结性的章节,没有列出,建议直接看原书。Android开发艺术探索 - 第1章 Activity的生命周期和启动模式Android开发艺术探索 - 第2章 IPC机制Android开发艺术探索 - 第3章 View的事...
2019-06-18 12:12:20 660
原创 Unity3d - 为何需要Time.deltaTime
初学Unity3D,第一次接触Time.deltaTime这个变量,以下是个人的一些理解,如有错误,欢迎拍砖。先说下Unity3d脚步中常用的两个方法:Update():每帧被调用一次FixedUpdate():每隔Time.fixedDeltaTime被调用一次。Time.fixedDeltaTime默认是0.02s,可以通过Edit->ProjectSettings->Ti...
2017-06-18 17:48:23 19769
原创 eclipse中新建Java工程的三个JRE选项区别
本文的主角就是这个十分令人纠结地方,至少令我这个初学者十分纠结… 先来看看官方的解释(链接)Use default JRE:When selected, the New Java Project Wizard creates a new Java project which uses the workspace default JRE. The default J...
2014-12-22 21:38:58 56452 19
原创 Android开发艺术探索 - 第12章 Bitmap的加载和cache
1.Bitmap高效加载加载Bitmap的方法:使用BitmapFactory的decodeFile/decodeResource/decodeStream/decodeByteArray可以分别从,文件/资源/输入流/字节数组中加载一个Bitmap。decodeFile/decodeResource会间接调用decodeStream。通过采样率控制加载出的Bitmap的大小,以提高加载效率:...
2019-06-18 11:55:01 321
原创 Android开发艺术探索 - 第11章 Android的线程和线程池
Android的主线程主要是运行四大组件以及处理其与用户的交互;而子线程用于执行耗时任务,如网络请求,I/O操作。1.Android中的线程形态AsyncTask在线程池中执行后台任务,其封装了Thread和Handler,通过execute方法执行AsyncTask。关键方法:onPreExecute:在执行execute方法的线程中运行,一般为主线程,用于执行在开始异步任务之前的一...
2019-06-18 11:54:51 700
原创 Android开发艺术探索 - 第10章 Android的消息机制
1.概述Handler的作用是将一个任务切换到指定的线程去执行。UI操作只能在主线程进行,这个限制是在ViewRootImpl#checkThread中实现的:void checkThread() { if (mThread != Thread.currentThread()) { throw new CalledFromWrongThreadException( ...
2019-06-17 17:06:33 190
原创 Android开发艺术探索 - 第9章 四大组件的工作过程
1.Activity启动过程 ref从Activity的startActivity方法开始。startActivity的多个重载方法,最终都会调用startActivityForResult方法。mParent代表的是ActivityGroup,API 13之前用于在一个界面中嵌入多个Activity,之后被Fragment替代,所以这里一般为null。该方法中主要调用了Instrumentat...
2019-06-17 17:04:34 255
原创 Android开发艺术探索 - 第8章 理解Window和WindowManager
一些说明:refWindow和View很多时候会彼此混杂,概念模糊不清。比如windowManager.addView实际上将View添加到WM对应的Window当中,并不是添加了一个新的Window,但是为其指定的LayoutParams的type含义却是Window的类型。Window的存在意义,实际上是将View的创建、ViewRootImpl和View交互的操作,从Activity/...
2019-06-17 17:03:50 320
原创 Android开发艺术探索 - 第7章 Android动画深入分析
Animation resourcesProperty Animation Overview1.View动画Tween补间动画四种动画效果,平移TranslateAnimation、缩放ScaleAnimation、旋转RotateAnimation和透明度AlphaAnimation,xml中对应四种标签的定义方式(res/anim/xxx.xml):<?xml version=...
2019-06-17 17:03:00 252
原创 Android开发艺术探索 - 第6章 Android的Drawable
Drawable表示了可绘制对象。getIntrinsicWidth/getIntrinsicHeight获取固有的宽高。对于BitmapDrawable来说,该方法返回其图片的宽高,对于shape类型的,默认返回-1。显示在View中的drawable会被拉伸或缩小为View的大小,固有宽高和其最终显示在View中的宽高不一定相等。一部分Drawable中用到的level的范围是0-1000...
2019-06-17 17:01:22 243
原创 Android开发艺术探索 - 第5章 理解RemoteViews
1.RemoteViews应用RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.layout_notication);remoteViews.setTextViewText(R.id.text, "text");remoteViews.setImageViewResource(R.id.image, R....
2019-06-17 16:58:49 199
原创 Android开发艺术探索 - 第4章 View的工作原理
1.ViewRoot和DecorViewViewRoot对应ViewRootImpl,实现了DecorView和WindowManager之间的交互。View的绘制流程从ViewRoot#performTraversals开始,经过measure、layout、draw最终将一个View绘制出来:例,measur过程:performMeasure->measure->onMea...
2019-06-17 16:58:12 183
原创 Android开发艺术探索 - 第3章 View的事件体系
1.基础知识位置参数:left/top/right/bottom是左上和右下的原始坐标位置,不会改变。translation*是相对于left和top的偏移量,默认是0。x/y是左上角当前(所看到的)的坐标。x = left + translationXy = top + translationYMotionEvent:触摸事件ACTION_DOWN/ACTION_...
2019-06-17 16:55:54 223
原创 Android开发艺术探索 - 第2章 IPC机制
1.多进程模式给四大组件指定android:process。命名方式:“:”开头,该process将是application的私有进程,最终的process名会加上package前缀;小写字母开头,该process将是全局进程,多个application可以共享该process。多进程造成的问题:静态成员和单例模式失效线程同步机制失效SharedPreferences可靠性下降App...
2019-06-17 16:53:57 248
原创 Android开发艺术探索 - 第1章 Activity的生命周期和启动模式
第1章 Activity的生命周期和启动模式1. 生命周期基本情况onStart和onStop根据是否可见被回调;onResume和onPause根据是否在前台被回调。实际使用中没有其他区别。onRestart当由不可见变为可见时回调。由A启动B,在A的onPause执行完之前,B不会被创建。所以在onPause中不能执行过多的操作。异常情况设备配置改变或者内存不足时,Act...
2019-06-17 16:52:24 180
转载 通过快慢指针判断链表成环的原理
转自How does Floyd’s slow and fast pointers approach work?We have discussed Floyd’s fast and slow pointer algorithms inDetect loop in a linked list.The algorithm is to start two pointers, slo...
2019-05-10 23:00:13 578
转载 什么是P问题、NP问题和NPC问题
转自 什么是P问题、NP问题和NPC问题 这或许是众多OIer最大的误区之一。你会经常看到网上出现“这怎么做,这不是NP问题吗”、“这个只有搜了,这已经被证明是NP问题了”之类的话。你要知道,大多数人此时所说的NP问题其实都是指的NPC问题。他们没有搞清楚NP问题和NPC问题的概念。NP问题并不是那种“只有搜才行”的问题,NPC问题才是。好,行了,基本上这个误解已经被澄...
2019-04-29 22:52:22 230 1
转载 主流浏览器内核介绍(前端开发值得了解的浏览器内核历史)
转自主流浏览器内核介绍(前端开发值得了解的浏览器内核历史)内核首先得搞懂浏览器内核究竟指的是什么。浏览器内核又可以分成两部分:渲染引擎(layout engineer 或者 Rendering Engine)和 JS 引擎。它负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入 CSS 等),以及计算网页的显示方式,然后会输出至显示器或打印机。浏览器的内核的不同对于网页的语法解释会...
2018-02-27 10:03:08 279
转载 各主流浏览器内核介绍
转自各主流浏览器内核介绍所谓的“浏览器内核”无非指的是一个浏览器最核心的部分——“Rendering Engine”,直译这个词汇叫做“渲染引擎”,不过我们也常称其为“排版引擎”、“解释引擎”。这个引擎的作用是帮助浏览器来渲染网页的内容,将页面内容和排版代码转换为用户所见的视图。注:有时候我们所说的“浏览器内核”甚至“渲染引擎”,其实除了渲染引擎,也悄悄包含了javascript引擎,如WebKi...
2018-02-27 10:01:57 541
转载 将代码保持高亮复制到word中
转自将代码保持高亮复制到word中第一种:在vim编辑器下,用:TOhtml先转换成html,然后保存后用浏览器打开,在浏览器里复制,到word里面去粘帖,就可以保存住代码的高亮。第二种:使用notepad++,这里有几种将代码保持高亮复制到word中的方法。1.选中当前要复制的代码2.使用插件,这2个选项都可以将代码保持高亮复制到剪切板中,
2017-11-24 18:34:51 7523 1
原创 Android 透明状态栏
写这篇文实在是因为网上流传了太多鱼龙混杂的文章,各种东拼西凑,而且只讲方法不讲道理。所以我尽量做到,最后给出的解决方案是能看得懂的。这里不讨论”沉浸式“”沉浸式状态栏“”透明状态栏“的定义,能知道我这篇讲的是”透明状态栏“,说明这些概念你已经搞清楚了。真正意义上的(全)透明状态栏,只有Android 5.0及以上才支持关于windowTranslucentStatu
2017-11-06 23:00:05 511
原创 Android EditText在界面恢复时数据出现重复问题
我们在自定义组合控件,或者在ListView/RecyclerView的Item中使用EditText的时候,在屏幕旋转或者在Fragment间切换返回时,会出现一种状况:当前界面上具有同一ID的EditText被填充了相同的数据。具体的原因和解决办法可以看这里:Why does Android change the value of EditTexts with same id?
2017-11-05 00:20:41 1296 3
转载 Serif和Sans-serif字体的区别
转自Serif和Sans-serif字体的区别在西方国家罗马字母阵营中,字体分为两大种类:Sans Serif和Serif,打字机体虽然也属于Sans Serif,但由于是等宽字体,所以另外独立出Monospace这一种类,例如在Web中,表示代码时常常要使用等宽字体。 Serif的意思是,在字的笔划开始及结束的地方有额外的装饰,而且笔划的粗细会因直横的不同而有不同
2017-10-24 10:44:43 13348
转载 Java中普通代码块,构造代码块,静态代码块区别及代码示例
转自 Java中普通代码块,构造代码块,静态代码块区别及代码示例//执行顺序:(优先级从高到低。)静态代码块>mian方法>构造代码块>构造方法。其中静态代码块只执行一次。构造代码块在每次创建对象是都会执行。1 普通代码块 1 //普通代码块:在方法或语句中出现的{}就称为普通代码块。普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--“先出现
2017-10-10 21:59:46 840
转载 钢笔工具进阶技巧!如何画出完美的贝塞尔曲线?
转自钢笔工具进阶技巧!如何画出完美的贝塞尔曲线?上次有个同学抱怨钢笔工具特别难用,描轮廓花了一个多小时,好在这篇教程及时拯救了他,一看就懂,马上会用,强烈推荐哟。另外,这篇教程可能就是文中作者说说的那篇外文文章:《干货!设计师必须掌握的贝塞尔曲线的秘密》在力力初学 UI 的时候,临摹了很多作品,每次临摹基本都可以分为两个步骤,第一步是用钢笔工具和形状工具把物体勾勒出来,
2017-08-28 12:07:08 1462
转载 贝塞尔曲线扫盲
转自贝塞尔曲线扫盲相信很多同学都知道“贝塞尔曲线”这个词,我们在很多地方都能经常看到。但是,可能并不是每位同学都清楚地知道,到底什么是“贝塞尔曲线”,又是什么特点让它有这么高的知名度。贝塞尔曲线的数学基础是早在 1912 年就广为人知的伯恩斯坦多项式。但直到 1959 年,当时就职于雪铁龙的法国数学家 Paul de Casteljau 才开始对它进行图形化应用的尝
2017-08-28 12:03:18 481
转载 Unity3D - Animation System Overview
转自Animation System OverviewAnimation System OverviewUnity has a rich and sophisticated animation system (sometimes referred to as ‘Mecanim’). It provides:Easy workflow and setu
2017-08-02 21:05:38 587
转载 Unity3D之Mecanim动画系统学习笔记(九):Blend Tree(混合树)
转自Unity3D之Mecanim动画系统学习笔记(九):Blend Tree(混合树)认识Blend Tree我们在Animator Controller中除了可以创建一个State外还可以创建一个Blend Tree,如下:那么我们看下新创建的Blend Tree和State有什么区别:唯一的区别就是Montion指向的类型变成了Blen
2017-08-01 11:12:19 976 1
转载 Unity3D - Auto Layout
转自Auto LayoutAuto LayoutThe Rect Transform layout system is flexible enough to handle a lot of different types of layouts and it also allows placing elements in a complete free
2017-07-25 16:38:15 434
转载 Unity3D - Creating and Using Materials
转自Creating and Using MaterialsCreating and Using MaterialsTo create a new Material, use Assets->Create->Material from the main menu or the Project View context menu.By default,
2017-07-24 12:06:04 642
转载 Unity3D - RigidBody vs Collider
转自RigidBody vs ColliderYou can indeed have a collider with no rigidbody. If there's no rigidbody then Unity assumes the object is static, non-moving. Unity does not bother testing for collisions
2017-07-06 17:04:44 344
转载 Unity3D - Transform.TransformPoint VS TransformDirection
转自Transform.TransformPoint VS TransformDirectionThat's the tricky part of Vector3's, they can store any 3 component value. So in this case, the values returned mean different things but you
2017-07-06 15:10:40 847
转载 Unity3D中使用git
参考自How to use Git for Unity source control?1.首先在项目根目录新建一个.gitignore文件,可以从https://github.com/github/gitignore/blob/master/Unity.gitignore 这里获取2.然后在Unity3D中进行设置:For versions of Unity 3D
2017-06-30 10:24:36 1403
转载 C# 接口的隐式与显示实现
转自C# 接口的隐式与显示实现通俗的来讲,“显示接口实现”就是使用接口名称作为方法名的前缀;而传统的实现方式称之为:“隐式接口实现”。费话不说,例子如下: interface IAnimal { void Dog(); } class Animal:IAnimal { public vo
2017-06-23 16:20:07 317
转载 C#特性详解
特性(attribute)是被指定给某一声明的一则附加的声明性信息。在C#中,有一个小的预定义特性集合。在学习如何建立我们自己的定制特性(custom attributes)之前,我们先来看看在我们的代码中如何使用预定义特性。 using System;public class AnyClass{ [Obsolete("Don't use Old
2017-06-23 14:03:03 216
转载 C# Lambda表达式
转自C# Lambda表达式每次写博客,第一句话都是这样的:程序员很苦逼,除了会写程序,还得会写博客!当然,希望将来的一天,某位老板看到此博客,给你的程序员职工加点薪资吧!因为程序员的世界除了苦逼就是沉默。我眼中的程序员大多都不爱说话,默默承受着编程的巨大压力,除了技术上的交流外,他们不愿意也不擅长和别人交流,更不乐意任何人走进他们的内心! 题外话说多了,咱进入正题
2017-06-22 16:02:47 540
转载 C# 匿名方法
转自C# 匿名方法每次写博客,第一句话都是这样的:程序员很苦逼,除了会写程序,还得会写博客!当然,希望将来的一天,某位老板看到此博客,给你的程序员职工加点薪资吧!因为程序员的世界除了苦逼就是沉默。我眼中的程序员大多都不爱说话,默默承受着编程的巨大压力,除了技术上的交流外,他们不愿意也不擅长和别人交流,更不乐意任何人走进他们的内心,他们常常一个人宅在家中!废话说多了,咱进
2017-06-22 16:01:58 366
转载 C#中的扩展方法
转自C#中的扩展方法学习总结什么是扩展方法? 扩展方法从字面上理解是指扩展的方法,而对应到面向对象编程这个格局中则是指为一个类提供的扩展方法。按照我们通常的理解,我们首先需要获得某个类的源代码,然后在这个类代码中增加成员方法,这样就可以达到为一个类提供扩展方法的目的。可是不幸地是,这种方法在没有源代码的情况下就无法奏效了,而且我们人为地去改变源代码有可能会破坏整个
2017-06-21 18:00:16 271
转载 Unity3D基础知识梳理
转自Unity3D基础知识梳理美术部分: Unity的话主要还是分两块吧,第一块是美术(自己都不懂~这里允许我稍微带过一下吧~),美术的话主要包括3d模型、材质、纹理(贴图)这几部分吧,当然你也可以说还有shader(着色器),Unity本身拥有几十种shader,也可以根据自己的需要使用shaderLab语言来编写shader,这个对我来说相当有难度,所以一般只用Un
2017-06-17 17:41:15 496
转载 Unity3D中手机陀螺仪的使用
转自Unity3D中手机陀螺仪的使用使用手机陀螺仪,可以获取手机的3D姿态,这在开发中是很有用的。当然现在的手机内置的陀螺仪都是比较廉价的,精度不高,但是作为实验设备看看效果还是可以的。本文将给出调用手机陀螺仪的简单方法。 首先,我们需要在场景中添加大量方块,作为观察对象。 控制陀螺仪的脚本:[csharp]
2017-06-02 11:14:48 5717
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人