![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
待整理
文章平均质量分 75
love_world_
这个作者很懒,什么都没留下…
展开
-
天天记录 - ListView下拉刷新原理
常见有的有两种方式一 最早实现的是johannilsson,GitHub项目列表,作者主页,作者博客https://github.com/johannilsson/android-pulltorefresh 这种实现是最常见的, 实现原理:UI布局: 向下拉动后头部需要显示刷新字样的一个view,通常是直接使用HeaderView,底部直接使用Fo原创 2012-11-04 22:24:47 · 4223 阅读 · 2 评论 -
天天记录 - Android invalidate流程方法调用堆栈分析
分析点击按钮导致背景切换,其中invalidate流程分析一 先看下之前从打印LOG的方法感性的认识Invalidate流程Android invalidate流程分析-图文View invalidateDrawable(Drawable drawable)View invalidate , l = 0 , t = 0 , r = 90 , b =原创 2012-12-26 22:32:50 · 2857 阅读 · 0 评论 -
天天记录 - Android refreshDrawableState源码及流程简单分析
有多种因素会导致触发refreshDrawableState,当前只考虑其中一种setPressed即设置视图是否处于被按下状态。其他会触发此方法的有focusChanged等。 原理是定义不同状态的图片,系统进行状态监听例如在onTouchEvent中判断当前在什么状态,再根据之前提供的图片进行设置并重绘显示效果。 以下是根据代码一个具体的流程,其中解释的并不是太多,当前也都原创 2013-01-23 22:43:44 · 9731 阅读 · 0 评论 -
天天记录 - Android View中的开关学习即位运算
Android 中经常看到View.mPrivateFlags参数进行位运算,最常见的是invalidate,touch,measure,layout,draw相关的开关设置,下来一起来看看位运算。名称符号计算规则计算含义取反~对一个二进制数的每一位执行逻辑反操作.使数字1成为0, 0成为1a = 01原创 2013-01-29 22:35:37 · 1912 阅读 · 0 评论 -
天天记录 - Android setVisibility参数VISIBLE, GONE, INVISIBLE与源码简单分析
View有一个方法setVisibility,作用是可以控制视图的显示和隐藏,int类型的参数可以传入三种值View.VISIBLE, View.GONE, View.INVISIBLE,其中VISIBILE表示设置视图显示,GONE和INVISIBLE设置视图隐藏,区别在于前者隐藏后不占用视图空间,而后者隐藏后依然占用视图空间。具体不同看下源码: /** *原创 2013-01-30 20:29:29 · 6234 阅读 · 0 评论 -
天天记录 - Android requestLayout源码简单分析
先来看以下View.requestLayout源码 /** * Call this when something has changed which has invalidated the * layout of this view. This will schedule a layout pass of the view * tree. */原创 2013-01-31 21:54:22 · 4017 阅读 · 0 评论 -
天天记录 - Android addView源码分析
Android把视图显示到屏幕上,从代码角度最终都是调用ViewGroup.addView方法,可以分为两类,一是初始化时添加视图,二是动态添加视图。1. 从源码角度分析添加视图的流程,以下列出其中4个addView方法 public void addView(View child) { addView(child, -1); } pub原创 2013-02-18 20:48:28 · 9386 阅读 · 4 评论 -
天天记录 - Android invalidate流程分析-图文
目的:通过一个Demo在所有自定义类中覆写所有invalidate开头的方法,打印LOG,看看Framework invalidate流程都执行了哪些方法一 例子布局 与 树形结构图 二 先看看效果 源码下载三 以上效果后台打出的LOGView invalidateDrawabl原创 2012-12-23 08:56:22 · 4023 阅读 · 2 评论 -
天天记录 - Andorid Invalidate 引发的思考
Android Framework调用Invalidate会触发刷新界面为什么要触发界面刷新呢? 通常是导致视图的改变会触发重新刷新,比如改变背景,按钮点击显示为选中状态,动态添加视图为什么视图改变就要重新刷新界面呢? 目前Android Framework的做法是刷新界面,除去这种办法,还有其他方式可以实现视图改变并在屏幕能原创 2012-12-21 23:09:09 · 1828 阅读 · 0 评论 -
天天记录 - Android invalidate学习使用的例子
先看看效果图:源码下载地址1. Activitypackage demo.invalidate;import android.app.Activity;import android.graphics.Color;import android.os.Bundle;import android.util.Log;import and原创 2012-12-19 22:46:10 · 2768 阅读 · 0 评论 -
天天记录 - Android 使用dmeo和源码分析invalidate流程
点击和抬起Button后,总共执行6次以下流程,LOG如下Button invalidateDrawable(Drawable drawable)Button invalidate , l = 0 , t = 0 , r = 480 , b = 72LinearLayout invalidateChildInParent 从源码查看下Invalidate的原创 2012-12-16 22:56:23 · 3623 阅读 · 0 评论 -
天天记录 - Android 使用Canvas Transalte方法控制视图移动
核心方法Canvas.translate先看效果图: 执行以下代码达到图片2效果,设置向右下方偏移(50, 50)canvas.translate(50, 50);再执行以下代码恢复到图片1效果 (按我的理解应该是设置 -50, -50)但是从例子中获知,以下代码才会达到想要的恢复效果.canvas.translate(0, 0)原创 2012-12-11 23:08:34 · 3998 阅读 · 1 评论 -
Android Canvas 两种使用方式
最简单的使用Canvas, 画一个方形,一行字。 下面是效果图public class CustomView extends View { private Paint mPaint; public CustomView(Context context) { super(context); } public Cu原创 2012-12-06 22:50:12 · 2515 阅读 · 0 评论 -
天天记录 - Ubuntu个人常用软件
当前Ubuntu版本 12.04.1 LTS抛弃默认unity桌面,换成经典的Gnome Classicsudo apt-get install gnome-panel重启再次登录时,点击右上角选择Gone Classic 之后输入密码登录即可一 小企鹅输入法(需要重启)sudo apt-get install fcitx如果通过以上不能安装,可以尝原创 2012-10-20 21:08:08 · 1196 阅读 · 0 评论 -
天天记录 - Eclipse Git插件Egit简单使用
一、环境搭建Git介绍与安装Eclipse + Egit插件 + GitHub服务器(1) Eclipse获取密匙 "Window > Preferences > Network Connections > SSH2" 1. General 设置 SSH2 Home 2. Key Management - Load Existing Ke原创 2012-09-04 19:05:15 · 5937 阅读 · 0 评论 -
android 开源项目 搜索方法
一、网络资源 三个国外开源项目网站 全球最大的开源软件网站http://sourceforge.net https://github.com/ gogole官方开源项目网站http://code.google.com/intl/zh-CN/ 国内开源项目介绍网站 http://www.oschina原创 2012-08-19 21:58:24 · 1454 阅读 · 0 评论 -
Eclipse 使用与配置
一、Eclipse一些配置1.自动补全Java输入任意字母时都自动补全,不用每次按ALT + /window--> preferences->Java -> Editor -> Content -> Auto activation triggers for java 输入:abcdefghijklmnopqrstuvwxyz.xml 自动补全 window--> p原创 2012-12-20 21:22:19 · 3799 阅读 · 0 评论 -
天天记录 - 使用文件创建内存交换空间swap
<!--@page {margin:2cm}p {margin-bottom:0.21cm}--> swap是针对物理内存不足的情况下,可以使用硬盘空间扩展内存的功能。 CPU读取的数据都是来自内存,当内存不足时,会把暂时不使用的数据移动swap中,空出内存给需要执行的程序加载。 swap有两种方式,一种是使用物理分区创建swap,本篇描述原创 2012-10-27 08:33:51 · 3673 阅读 · 0 评论 -
Eclipse 重构功能的使用与重构快捷键
重构是什么?在代码写好之后改进它的设计。重构分类:物理结构、类层次结构、类内部结构。名称快捷键直译作用范围描述RenameAlt + Shift + R 可以对任意变量、类、方法、包名、文件夹进行重新命名,并且所有使用到的地方会统一进行修改。MoveAlt + Shif原创 2014-12-03 08:53:55 · 11888 阅读 · 0 评论 -
《重构》读书笔记 与 Eclipse 重构功能使用
第二章 重构原则重构是什么?重构(名词):对软件内部结构的一种调整,目的是在不改变[软件之可察行为]前提下,提高其可理解性,降低其修改成本。重构(动词):使用一系列重构准则(手法),在不改变[软件之可察行为]前提下,调整其结构。两顶帽子:添加新功能和重构,不能同时进行。为何重构?改进软件设计:可能设计之初根据已有需求,是世界上最优的设计。但是可能过程中增删许原创 2014-12-08 09:05:37 · 2371 阅读 · 1 评论 -
天天记录 - 双休安装双系统并搭建环境的悲惨遭遇
Windows 7 和 Ubuntu 20.04 LTS、 10.04.4 LTS双系统,前者是主系统,虽然以后不常用,但是Ubuntu后安装,ISO中自包含双系统的管理,比较方便。两个系统都是64位,新买的笔记本四核8G内存,要是使用32位系统太浪费硬件资源。之所以主使用的系统是Ubuntu,本身是做Android开发,Android是基于Linux的自己想多接触下,并且原创 2012-09-16 22:33:45 · 2079 阅读 · 2 评论 -
Ubuntu 搭建Android环境
安装ADT时遇到异常Cannot complete the install because one or more required items could not be found. Software being installed: Android Development Tools 20.0.3.v201208082019-427395 (com.android.ide.ecli原创 2012-10-10 23:05:15 · 3352 阅读 · 0 评论 -
天天记录 - Eclipse导入Android 4.1.2源码工程
之前下载和编译都是在虚拟机里面进行,只是一个测试环境目的是为了避免在主机中下载和编译其中误操作导致系统问题修理起来麻烦。 之前都在虚拟机里面下载和编译完成了,今天把源码使用tar压缩,在主机上解压导入Eclilpse。 1. 切换到源码的根目录:cd WORKING_DIRECTORY 2. 拷贝.classpath到源码根目录,目的是为了原创 2012-10-19 23:03:28 · 2342 阅读 · 0 评论 -
天天记录 - Ubuntu系统再次编译android 4.1.2遇到问题
host Executable: clang (out/host/linux-x86/obj/EXECUTABLES/clang_intermediates/clang)out/host/linux-x86/obj/STATIC_LIBRARIES/libclangStaticAnalyzerFrontend_intermediates/libclangStaticAnalyzerFronte原创 2012-10-21 22:37:54 · 3205 阅读 · 2 评论 -
天天记录 - 搭建Android下载编译环境错误记录
执行android官方给出的Ubunut 12.04.1 LTS 64 需要的安装包时,出现以下提示,说明依赖关系有问题,而在模拟器中安装同样的系统,裸机情况下却可以正常安装,所以干脆重装系统,我不想去一步步的查找依赖包,对我来说下载编译android环境是使用ubuntu系统的核心目的。 重装系统后,使用默认的源还是获取不到安装包,是在Ubuntu软件中心 - 编辑 - 软件源原创 2012-12-02 08:24:54 · 3630 阅读 · 0 评论 -
Android 调试方法
Android 4.2.1 Processing target/product/generic/obj/APPS/Launcher2_intermediates/package.apkDone!Install: out/target/product/generic/system/app/Contacts.odexInstall: out/target/pr原创 2012-12-13 19:30:03 · 2479 阅读 · 0 评论 -
天天记录 - Windows 使用GIT下载Android Framework源码
1. 在GIT中使用命令git clone http://android.googlesource.com/platform/frameworks/base.git2 如果想下载Androd Framework外的其他源码,可以在此发现分支路径https://android.googlesource.com/其左侧列出的是name,套用git clone ht原创 2012-12-25 22:25:32 · 2613 阅读 · 0 评论 -
天天记录 - Ubuntu 12.04编译并配置Android Windows SDK
我是先编译完Android源码之后执行的此操作,源码版本Android 4.2.1,主要参考文档源码目录下/sdk/docs/howto_build_SDK.txt一 在Ubuntu 下编译Windows SDK 安装工具$ sudo apt-get install mingw32 tofrodos切换到Android源码目录下执行$ . build/e原创 2013-01-19 10:26:14 · 3169 阅读 · 0 评论 -
Android View.scrollTo, View.scrollBy控制视图滚动原理
一、使用view内部属性mScrollX, mScrollY这两个属性用于记录滚动位置,不同于x,y二、scrollTo,scrollBy仅在视图的父视图有效猜测原因:1. 仅重绘子视图所在区域,但是子视图位置已经发生改变2. 只有父视图刷新其子视图所有区域才行 3. Android文档说明,文档地址ScrollingThe framework原创 2012-11-23 23:04:19 · 3623 阅读 · 0 评论 -
天天记录 - 从源码分析ScrollBy和ScrollTo仅执行onDraw方法
1. 先来看看View.scrollBy的源码 public void scrollBy(int x, int y) { scrollTo(mScrollX + x, mScrollY + y); }从注释中可以获知,scrollBy 方法把视图移动到当前的相应偏移位置。其中调用scrollTo2. 查看View.scrollTo源原创 2012-11-13 21:55:41 · 4864 阅读 · 0 评论 -
天天记录 - Android 使用view.ScrollBy实现View随手指移动
这篇文章的原标题是《Android 使用scroller实现View随手指移动》 真是大错特错, Scroller仅仅是一个辅助类用于根据滚动速度获取每次的偏移量而已。一 有图有真相,先上图和例子例子下载地址, 伪码如下:public class CustomLinearLayout extends LinearLayout {原创 2012-11-12 22:34:35 · 4979 阅读 · 2 评论 -
Android 使用Scroller自动滚动第一种实现
源码下载 , 效果图如下:1. 自定义视图继承自ViewGroup,覆写onMeasure,onLayout,之前文章介绍过覆写这两个方法。2. 提供两个方法供两个button使用,向左向右移动。调用startScroll (int startX, int startY, int dx, int dy)方法, 以提供的起始点和将要滑动的距离开始滚动。滚动会使用缺省值250m原创 2012-10-29 22:21:27 · 6389 阅读 · 1 评论 -
Android 使用Scroller自动滚动第二种实现
之前写的《Android 使用Scroller自动滚动第一种实现》, 通过Runnable中获取滚动后地址,当前例子是使用覆写computeScroll方法获取滚动后地址。一、有图有真相二、实现介绍例子比较简单 Activity + ViewGroup1. Activity源码public class ScrollerDemoActivity ext原创 2013-03-18 21:20:56 · 2833 阅读 · 0 评论 -
Android Activity总结
Activity通常是学习Android写demo时遇到的第一个类,知名程度可以与经典的打印“Hello World”相媲美,毕竟在Android中即使想在界面上显示一个“Hello World”,也必须先创建Activiy子类在其onCreate方法中创建视图,在视图上添加文字“Hello World”。哈哈,接下来就来看看Android 的四大组件使用频率最高的Activity吧。原创 2014-01-26 23:52:22 · 2503 阅读 · 0 评论 -
Android AlarmManager学习
一、AlarmManager是什么可以设置即使系统锁屏休眠之后依然可以存在。Alarm Manager有个很好的特性就是即使在你的应用程序真正退出或手机休眠时,它仍然起作用。Alarm Manager发出的消息通过拥有一个CPU唤醒锁,保证即使锁屏的情况下避免手机进入休眠状态,当在手机接收器的onReceive方法中处理完发送的消息后才会释放锁,手机才能进入休眠状态。原创 2014-01-24 14:13:36 · 1893 阅读 · 0 评论 -
天天记录 - Android TextView跑马灯效果
TextView本身提供跑马灯效果支持, 只需要按以下配置,注意Width必须设置固定值且必须小于文字的总宽度,才会有跑马灯效果 <TextView android:id="@+id/textview" android:layout_width="200px" android:layout_height="wrap_content原创 2013-01-26 22:13:33 · 1547 阅读 · 1 评论 -
Android 分辨率 及 px, dip相互转换
如果只是想查800 * 480屏幕手机,px值转dip公式是: dip = px / 1.5; 下面解释为什么这样计算一 手机尺寸分布情况,来自Android官网 ldpimdpihdpixhdpismall1.7% 1.0% normal0.4原创 2013-01-05 22:15:58 · 2063 阅读 · 0 评论 -
天天记录 - @ViewDebug.ExportedProperty
@ViewDebug.ExportedProperty方法是Android framework层用于DEBUG使用的,并不是公共API这个方法的注释如下:This annotation can be used to mark fields and methods to be dumped by the view server. Only non-void methods wit原创 2012-11-09 22:41:49 · 5044 阅读 · 0 评论 -
天天记录 - 一个onFocusChanged问题
有两种获取焦点的方式,一种是用户自己使用上下左右的方向键移动焦点,另外一种方式是直接调用视图的View.requestFocus()方法,前一种方法最终也是调用requestFocus。* 遇到问题问题描述: 前两天修改一个BUG遇到问题,使用上下把焦点放到一个view上,当锁住屏幕解开屏幕后,焦点会转移到其他view上。查找出错原因:原创 2012-09-18 19:41:54 · 5306 阅读 · 0 评论 -
天天记录 - Android焦点相关知识学习
focus 是使用物理按键的情况描述,例如使用向下键选中一个view,这个view就是focused* Button 获取焦点:button.setFocusable(true);button.setFocusableInTouchMode(true);button.requestFocus();二、 Android Focus 相关源码分析 焦点改变最终都原创 2012-09-17 22:11:40 · 5753 阅读 · 0 评论