文件管理器实现

2016-6-1 chenhui 随笔

文件管理器的实现比较复杂,本文只介绍一些关键点,为没有思路的同学起到提醒的作用,一些杂七杂八的简单的功能可以自己琢磨。 一个优秀的文件管理器,他应该实现如下功能: 文件系统浏览和操作(需排序) 文件分类(如音乐、视频、图片) 文件系统浏览的功能如何实现? 一个 Layout,里面放一个 ListView,就构成了文...

阅读全文>>

评论(0) 浏览(371)

即时通讯实现

2016-6-1 chenhui 随笔

本文整理自博主以前做的仿微信项目源代码以及笔记。 即时通讯本身比较简单,所以本文就大概说一下要点。 即时通讯是网络应用,所以他除了一个 Android 客户端以外,还需要实现一个服务端。 服务端的实现可以有两种: 使用 PHP 此类 Web 后台开发常用的语言(好吧,Web 后台开发我只会 PHP) 使用 C、C++、Java...

阅读全文>>

评论(0) 浏览(335)

系统信息、PM、AM

2016-3-19 chenhui 零散笔记

系统信息通常可以通过 android.os.Build 和 SystemProperty 两个类进行获取。 andorid.os.Build 保存的主要是一些硬件信息和编译信息,可直接通过成员获取,比如: Build.BRAND :Android 系统定制商 Build.PRODUCT :手机产品名 .. ...

阅读全文>>

评论(0) 浏览(179)

ABD 常用命令

2016-3-2 chenhui 零散笔记

ADB 原生常用命令 adb shell     进入 Android 命令行 adb install -r x.apk     安装应用程序 adb push <local> <remote>     把 local 指向的本地文...

阅读全文>>

评论(0) 浏览(142)

ViewDragHelper

2016-2-29 chenhui 零散笔记

ViewDragHelper 是一个简化 ViewGroup 实现子 View 的拖动操作的类,下面先给出一个使用 ViewDragHelper 的 ViewGroup 的框架: public class MyViewGroup extends FrameLayout { ViewDragHelper vdh; Callba...

阅读全文>>

评论(0) 浏览(199)

滑动冲突

2016-2-26 chenhui 滑动

当内外两层 View 同时可以滑动时,就会容易产生滑动冲突,也就是说有一个 View 无法进行滑动。 一般来说,滑动冲突会发生在如下两种情况: 外部滑动方向和内部滑动方向不一致,如外面一个 ScrollView,内部一个 ListView。一个左右滑动另一个上下滑动,这会冲突。 外部滑动方向和内部滑动方向一致,比如内外两个 ScrollView。...

阅读全文>>

评论(0) 浏览(133)

弹性滑动

2016-2-24 chenhui 滑动

我们在使用一些 APP 时,滑动的速度会随着进度变化,而不是僵硬的以相同速度进行滑动。这就是所谓的弹性滑动。 下面介绍实现弹性滑动的方法。 我们知道,ViewGroup 是 View 的子类,只要是 View,那他就通过 onDraw 来绘制自身。而在绘制自身时,他会调用一个名为 computeScroll 的函数。这是背景知识。 然后我...

阅读全文>>

评论(0) 浏览(148)

内存和代码优化

2016-2-24 chenhui 零散笔记

内存优化主要是 Bitmap 的优化,在使用 Bitmap 的时候,要注意下面几点: 及时回收内存。在用完 Bitmap 后,要及时调用 bitmap.recycle() 来释放他 使用 LruCache 来对图片进行缓存 代码优化就多了,注意点如下: 减少成员变量,尽量使用局部变量 减少对象的创建...

阅读全文>>

评论(0) 浏览(152)

布局优化

2016-2-24 chenhui 零散笔记

尽量避免重叠绘制,即一个 View 叠在另一个 View 上面。 优化布局层数,布局文件的 XML 树不能太高。 使用 <include /> 来重用布局文件。 如果我们需要一开始就隐藏某个 View,那么使用 <ViewStub /> 标签来包住他,他默认是不显示的,可以在 Java 里显示他。他的优势是只有在...

阅读全文>>

评论(0) 浏览(143)

APK 的反编译和打包

2016-2-23 chenhui 零散笔记

Android 的 Apk 包,本质上是一个带有签名的 ZIP 压缩包,我们可以直接用 ZIP 压缩软件解压他。 下面是微信的 Apk 包解压后的内容: assets 存放了一些配置文件 lib 目录存放了一些 NDK 库 r 目录是资源文件 META-INF 目录存放签名文件 cl...

阅读全文>>

评论(0) 浏览(160)

滑动基础

2016-2-22 chenhui 滑动

滑动效果是基于屏幕触摸事件的,屏幕触摸事件可分为如下三种: ACTION_DOWN ACTION_MOVE ACTION_UP 三种事件共同构成了滑动效果。在手指按下时,准备滑动;当手指在屏幕滑动时,滑动开始;当手指松开屏幕时,滑动结束。 我们可以通过 VelocityTracker 对象来追踪滑动速度,包括水平和垂直方向的速度。使...

阅读全文>>

评论(0) 浏览(151)

实现 ViewPager

2016-2-22 chenhui 自定义控件

实现 ViewPager 的滑动功能是学习自定义控件很好的一个例子,本文一步步介绍如何实现 ViewPager 的滑动功能,了解了滑动功能如何实现,便能了解比如 QQ 侧滑菜单、APP 的下拉引导页是怎么实现的。 ViewPager 实际上是一个包含了若干个页(View)的 ViewGroup,所以我们实现他时,必须先继承 ViewGroup: public class MVi...

阅读全文>>

评论(0) 浏览(187)

滑动效果的七种实现

2016-2-21 chenhui 滑动

总共有七种方法可供我们实现滑动效果,下面来介绍他们。 在 View 的 onTouchEvent() 里调用自己的 layout() 方法,传入要更改的坐标值 在 onTouchEvent() 里调用自己的 offsetLeft(Top)AndRight(Bottom)(int offsetX[或offsetY]) 方法,传入的值是 View 要向左或向下的偏移数 ...

阅读全文>>

评论(0) 浏览(144)

SDK 的更新

2016-2-19 chenhui AndroidStudio

打开 SDK Manager: 打开后的界面如下: 操作和 Eclipse 的 SDK Manager 是一样的,如果没有翻墙工具,可以使用镜像站来进行更新, 先打开代理设置: 然后在打开的界面里填入镜像站和端口即可:

阅读全文>>

评论(0) 浏览(129)

主题的切换

2016-2-19 chenhui AndroidStudio

先进入设置界面: 然后选择 Theme 下拉菜单里的选项即可: Darcula 主题是常见的黑色主题,程序员都用这个。

阅读全文>>

评论(0) 浏览(113)

AndroidStudio 的下载和配置

2016-2-19 chenhui AndroidStudio

下载地址:developer.android.com/sdk/installing/studio.html 镜像地址:www.androiddevtools.cn/ 在安装 AndroidStudio 后,需要配置 Java 的环境变量: export JAVA_HOME=<Java Path>; export JRE_HOME=$JA...

阅读全文>>

评论(0) 浏览(173)

MeasureSpec

2016-2-17 chenhui 自定义控件

MeasureSpec 在 View 的绘制中,起到记录 View 的大小和位置信息的作用。 他是一个 32 位的 int 值,其高 2 位是测量模式,其余的位是 View 的高/宽,什么是测量模式?我们知道,在 Android 中,View 的大小可以是一个具体值,也可以是 match_parent 或 wrap_content,这三种大小都有自己的测量模式,高 2...

阅读全文>>

评论(0) 浏览(173)

Android 系统目录

2016-2-16 chenhui 零散笔记

系统目录 /system/app/      系统 APP 目录 /system/bin/         系统自带组件目录 /system/frot/     系统字体 /system/framework/     系统...

阅读全文>>

评论(0) 浏览(163)

Activity四种启动模式

2016-1-30 chenhui 零散笔记

Activity 有四种启动模式,分别为: standard     默认模式。每次启动都会创建一个新的 Activity 实例,这些 Activity 会互相叠加。 singleTop     允许多个实例,但是不允许相同的实例叠加。即可以存在两个相同的 Activity 的实例,但他们其中一个不...

阅读全文>>

评论(0) 浏览(153)

Canvas 技巧

2016-1-21 chenhui 绘图

Canvas 有两个方法,一个是 save,另一个是 restore。save 的功能是保存当前画布上的图像,而 restore 则是把 save 保存的图像和当前画布的画像进行合并。 Canvas 的 translate(x,y) 把坐标系移动到 x、y 这个坐标; Canvas 的 retate(int ) 把坐标系旋转某个角度。 Canvas 的 saveLayer...

阅读全文>>

评论(0) 浏览(137)

Copyright ©2015-2016 freehui All rights reserved