
项目经历
文章平均质量分 64
fyfcauc
这个作者很懒,什么都没留下…
展开
-
spdy_proxy(一)
stream_userdata 的 buffer 和 end_of_file在两个jie原创 2014-10-16 21:50:31 · 934 阅读 · 0 评论 -
Night模块(二)
Night模块(二)NightMode的具体实现这个手法值得梳理归纳一下.首先,NightMode的切换并不是简单的变暗/亮,而是整体配色方案的变化,注意是整体,有一个View没有变过来就会造成强烈的违和感.整体配色方案的变化包括了很多细节, View的background, 字体颜色,如果显示图像,也要变原创 2015-03-11 14:20:11 · 775 阅读 · 0 评论 -
Wallpaper模块(一)
Wallpaper模块(1)Picker是一个用于从交互的选取图片类的Activity中获得所选图片的类. Tool.对外开放Listen接口,取图成功和取图失败.Picker因为定位是一个tool,因此设计为单例模式,load Class 即生成实例. early-init.因为Picker其实只在WallPaper模块被使用,因此在设计的时候没有考虑pendin原创 2015-03-13 15:28:10 · 818 阅读 · 0 评论 -
Download模块 (十一)
Download模块 (十一)DownloadService,该service是为了实现APP切换到后台仍可以下载而实现的, 这也是Android所提倡的一种后台处理方式。该Service因为会和MainActivity这一端频繁交互,因此设计成为了bind的service.而同时在系统的Notification栏中也会有复数个不可撤销的Notification与此Servic原创 2015-03-01 19:39:42 · 953 阅读 · 0 评论 -
Wallpaper模块(2)
Wallpaper模块(2):WallPaperFragment extends ButtonReceiveFragment,后者是项目的一个基础类,作用很简单,在被attach到某个Actviity时,如果Actviity是一个ButtonProvider,那么该fragment就会将自己register到该Activity以在Activity收到onKeyDown时,会被通原创 2015-03-13 16:54:22 · 821 阅读 · 0 评论 -
Download模块 (十三)
Download模块 (十三)DownloadTask类封装了一次下载任务的全部信息 以及 真正下载的实现DownloadTask接收DownloadInfo作为构造参数,并且内部维护一个指向其的引用,作为一个组成部件。DownloadTask有状态,使用enum类实现:NOT_START,IN_PROGRESS,PAUSED,FAILED,COMP原创 2015-03-02 16:57:04 · 749 阅读 · 0 评论 -
Download模块 (十二)
Download模块 (十二)LocalDownloadResourceProvider implements了 DownloadPageProvider.并且还封装了几乎所有create的view的逻辑交互.LocalDownloadResourceProvider还定义了几个要显示的View类。LocalDownloadResourceProvider把V部分也给承包了。原创 2015-03-02 11:53:28 · 685 阅读 · 0 评论 -
Tab 模块 总结
Tab 模块总结从整体上对TabMenu这个模块的一些设计分析:为了实现全屏推拉TabMenu,MovingMenu是叠在mainUI上面的,两者都在一个FrameLayout中,并且MovingMenu都是match_parent来实现了全屏覆盖.MovingMenu作为FrameLayout,本身没有设置backGround,因此是透明的,而里面的两个View组件,原创 2015-03-09 18:47:28 · 1652 阅读 · 0 评论 -
Android Bitmap资源的简单池化
Android Bitmap资源的简单池化说一下Bitmap池化的原因: Bitmap在内存中的体现基本就是一大块的内存,当然还有对应的类的数据,这就造成了Bitmap的create 以及在被dalvik GC的时候会付出比较大的时间代价.池化说白了就是空间换时间,开辟一个回收池,作为一个中间层,可以减少真正create和GC的次数.为了池化Bitmap,直接使用bit原创 2015-03-12 11:27:24 · 986 阅读 · 0 评论 -
Download 项目总结
Download 项目总结.每一层的View只监听自己感兴趣的event,也基本只操作自己View内的直接子元素,当然不排除它进一步触发自己的View变化event,以及对自己内部的子view的操作。一个event的影响流可以是 (1)挨个遍历 要影响的 V/M ,这样做的好处 每个V/M的影响处理逻辑可以尽可能的封装在自己内部,不过这中方式一般是比较小范围,或者没有更原创 2015-03-05 15:17:28 · 529 阅读 · 0 评论 -
FileUtils
FileUtils:顾名思义,用于处理和File相关的一个static工具函数类。对于这种工具类本身,一般会为其加一个final的modifier,毕竟一般来说是没有被继承的必要的。取得文件后缀的函数: 很简单,但是要考虑这种情况: .tar.bz2/.tar.gz/.tar.xz/.tar.Z 对于这类文件,要从.tar开始作为文件的后缀。实现中会维护一个原创 2015-03-27 13:54:58 · 516 阅读 · 0 评论 -
Tab 模块 (一)
Tab 模块 (一)做该模块的时间早于Download.MoveMenu extends FrameLayout, 可以响应手势或者按钮出现/消失. 提供了几种手势滑动方向,并且是可以set的并且在APP的setting中持久化.手势滑动方向被enum化:UNDEFINED,LEFT,RIGHT,LEFT_RIGHT,FORBID_DRAG,原创 2015-03-06 13:59:32 · 1118 阅读 · 0 评论 -
ThreadUtils
ThreadUtils:提供了对Android的handler一系列封装简化操作,项目必备。该类内部会维护一个UIhandler, 出于lazyInit的目的,该handler作为某个 内部static类的private static成员并在该class被load的时候才会真正的初始化为UIhandler。外部的ThreadUtils类可以直接 通过该static类原创 2015-03-27 14:55:13 · 1246 阅读 · 0 评论 -
Dragger模块
Dragger模块Dragger模块是项目的一个base模块,用于实现对所挂接View的drag位移.这个模块设计的理念很好,体现了V 和 C 完全独立分离的思想,随便一个View,被Dragger挂接上即可在parent内跟随Touch移动.其实本质上就是之前Tab模块中封装的TouchController,只不过这里直接将其独立出去,将要drag的View也作为To原创 2015-03-11 21:28:47 · 685 阅读 · 0 评论 -
Java 一种Impl类的封装方法
有时候会有这样一种需求:一个baseClass有一个static的getInstance方法,而在该基类中又定义了几种定位不同需求extends自此类的subClass未知的>,然后基类的getInstance方法根据不同情况返回不同的subClass子类实例,因为都是extends自baseClass,所以可以被按照baseClass的契约来使用.上面的说白了就是一个简单的工厂模式.原创 2015-03-12 10:19:57 · 3309 阅读 · 0 评论 -
Download模块 (十九)
Download模块 (十七)AuthDialog extends DialogFragment, 有一个webview显示一个login网页,并且会监听login 成功/失败的event,并将event进一步扩散。对webview的监听是通过WebViewClient和WebChromeClient实现的:(1)WebViewClient: onPageStarted() o原创 2015-03-04 17:05:44 · 599 阅读 · 0 评论 -
Download模块 (十五)
Download模块 (十五)DownloadInfo实现了Parcelable,顾名思义,封装了一个Download的所有必要信息,信息足够使接收端构造出合乎发送端需求的DownloadTask。并且Info在接收端也会承载起M的角色,所有也会有一些setter来更新其信息。实现了Parcelable接口:(1)describeContents()直接返回0即可。原创 2015-03-03 15:05:48 · 567 阅读 · 0 评论 -
android View TranslationX/Y
基于4.4今天简单测试了下View的 TranslationX/Y的效果,代码注释写的其实很含糊,起码没有写出这个属性的影响:* The horizontal location of this view relative to its {@link #getLeft() left} position.* This position is post-layout, in addition原创 2015-01-28 15:26:35 · 2006 阅读 · 0 评论 -
accept 返回不了对端地址
搞惯java, 竟然把C的socket丢的也差不多了,今天随手写了个socket的 clinet/server, 在accept以后发现,自己在accept函数设置的用于获得对端地址和端口的sockaddr结构体是全0,想着不能呀,后来搞了一圈才发现,socket程序中在调用accept函数前,先给accept函数需要的参数len赋值len = sizeof(cliaddr);然后原创 2015-01-21 14:15:24 · 1142 阅读 · 0 评论 -
ListView adapter notifyDataSetChanged() track
ListView 为了方便使用,自己在setAdapter()的时候就会register 一个新的AdapterDataSetObserver,以响应之后的adapter的notifyDataSetChanged(),本质就是一个观察者模式的实现:@Override public void setAdapter(ListAdapter adapter) { if (mA原创 2014-12-29 11:34:44 · 935 阅读 · 0 评论 -
android ValueAnimator 源码track
private void start(boolean playBackwards) { if (Looper.myLooper() == null) { throw new AndroidRuntimeException("Animators may only be run on Looper threads"); } mPlayingBackwards =原创 2014-12-22 10:44:05 · 772 阅读 · 0 评论 -
Android ImageView src 与 background 的差别
一个小test:做了一个会响应scroll上下移动的ImageView,在响应scroll移动时,发现,其src的图片会随着scrollTo/By()移动, 而 background的图片则在这个过程一直保持不变。然后有测试了每次onDraw()时在canvas上draw一个圆,这个圆也会随着scroll上下变动。看了下code:background的draw其实是在基础类Vi原创 2014-12-16 16:51:00 · 578 阅读 · 0 评论 -
android canvas 操作 test
简单测试: p.setColor(Color.rgb(255, 255, 255)); c.drawRect(new Rect(0, 0, 500, 500), p); c.scale(0.5f, 0.5f); p.setColor(Color.rgb(0, 0, 255)); c.drawRect(new Rect原创 2014-12-15 17:20:30 · 715 阅读 · 0 评论 -
一个 forceLayout() 和 requestLayout() 的测试
两个view:一个是系统默认的FrameLayout, A 一个是自己自定义的MyView extends View,重载了onMeasure函数(): B @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { // TODO Auto-generated me原创 2014-12-12 16:24:42 · 7388 阅读 · 0 评论 -
java javac jar 使用
虽然java现在搞的也挺多了,但是像当初自己被VB误入歧途直接IDE上手一样,对于java的控制台级别的命令用的其实很少,因为加入到一个项目中,除非项目是从头搭建,或者涉及到比较多的编译修改,否则基本是不会专门去碰控制台命令的,以及相关的选项的,就像搞c++时,g++的option一堆一堆,但是往往常用就那么几项,并且makefile文件之后也不会怎么动选项。这次就专门小用一把记录一下:原创 2014-12-11 16:24:10 · 742 阅读 · 0 评论 -
shouldOverrideUrlLoading()被拦截
今天遇到了一次webview 的 shouldOverrideUrlLoading()没有被调用的问题,当时以为是因为2.3的webview某些原创 2014-11-13 15:38:43 · 2373 阅读 · 0 评论 -
spdy_cache
http cache的存取管理实现类,采用了高度封装,原创 2014-09-28 21:40:12 · 538 阅读 · 0 评论 -
spdy_header
spdy_header: 一个工具类,是http he a 因为http header本身的key-value特性,因此使用了hashMap来保存httpheader, key是header的名称,而value是header的内容。对于碰撞,则采用了拉链法来解决,hashMap的bucket的尺寸由HTABLE_SIZE来编译期决定。 采用的hash算法比较简单,简单的字符原创 2014-09-23 15:59:06 · 744 阅读 · 0 评论 -
Tab 模块 (三)
Tab 模块 (三)TabContainer作为一层layout的存在有些浪费的,是当时应急为了实现调整tabViewList的gravity而作为layout添加的.TabContainer完全可以作为TabMenu的一部分或者一个组件存在.TabContainer逻辑上也是一个中间层的角色,上下传达消息.TabMenu的一部分C逻辑被分在了TabContaine原创 2015-03-07 14:22:37 · 618 阅读 · 0 评论 -
Choreographer 翩翩起舞
/** * Callback type: Input callback. Runs first. * @hide */ public static final int CALLBACK_INPUT = 0; /** * Callback type: Animation callback. Runs before traversals.原创 2015-01-30 15:02:34 · 1999 阅读 · 2 评论 -
FrameLayout中移动childView
今日偶然想起了在某个FrameLayout中通过childView.layout()来实现移动childView的code.又想到FrameLayout在自己的onLayout中基本只考虑child layout_gravity/margin/padding 这个因素,其他的一律按照对齐到原点来排列.那么通过childView.layout()来移动childView,但是如果其paren原创 2015-03-11 15:28:30 · 878 阅读 · 0 评论 -
Tab 模块 (四)
Tab 模块 (四)TabViewListView是真正负责显示TabView,以及相关TabView交互的View,extends AdapterView, 使用AdapterView而不是更为现成的ListView的原因是,ListView虽然在展现List方面很方便很现成,但是ListView不支持对某个ListItem的Touch复杂交互,要在ListView的基础原创 2015-03-08 17:44:10 · 686 阅读 · 0 评论 -
Download模块 (十)
Download模块 (十)DownloadPagerAdapter是一个简单的基于PagerAdapter的类,定位很明确,就是为DownloadFragemnt中的ViewPage提供adapter。 因为将大量的逻辑外包给了View的provider,因此DownloadPagerAdapter本身的逻辑功能除了必须override的以外不多。DownloadPagerA原创 2015-02-28 15:30:09 · 484 阅读 · 0 评论 -
Download模块 (六)
Download模块 (六)DownloadManager是一个重M+轻C的角色。内部维护了所有Download的信息聚合,并围绕此信息聚合提供一些查询类的功能,也有一些C操作。DownloadManager 是一个单例模式的类,类载入时直接初始化一个sInstance.DownloadManager其实也可以完全设计为一个static类,不过从其语义和定位考虑,一个man原创 2015-02-27 22:18:45 · 550 阅读 · 0 评论 -
DownLoad模块 (四)
DownLoad模块 (四)DownloadConfirmDialogPagerAdapter是为ViewPager所使用的PageAdapter,直接extends自PagerAdapter并且也不符合FragmentPagerAdapter适用的场合, FragmentPagerAdapter以及FragmentStatePagerAdapter还没有使用过> 该类将I原创 2015-02-27 16:48:53 · 603 阅读 · 0 评论 -
Android Activity ActionMode Callback
两个ActionMode在Activity的回调,记一下。注意这两个callback发生的时机都是onXXX,即事件是发生了,但是还没完成,就是ActionMode还没有完全的出现/消失.因此,某些时候,要做一些明确在ActionMode出现/消失的操作时,要把这些操作Delay到下一个slice. /** * Notifies the Activity原创 2015-02-13 11:31:44 · 1023 阅读 · 0 评论 -
android 使用getIdentifier()获取资源Id
使用getIdentifier()方法可以方便的获各应用包下的指定资源ID。主要有两种方法:(1)方式一Resources resources = context.getResources();int indentify = resources.getIdentifier(org.loveandroid.androidtest:drawable/icon",null,null);原创 2015-02-09 17:56:11 · 862 阅读 · 0 评论 -
android Resources getDimension getDimensionPixelSize getDimensionPixelOffset
对三个函数的简单test:case1:数据: 16.3dp 16.6px 16.3sp 在DPI=2的设备上测试:E/FYF (24379): getDimension 32.599976 16.599976 32.599976E/FYF (24379): getDimensionPixelSize原创 2015-02-09 16:30:09 · 773 阅读 · 0 评论 -
Android Touch Event 超出范围
做了个简单测试:一个一定范围的View,设置其onTouchEvent返回true,表明可以处理Touch事件,点中该View,然后滑动,滑动出View一段距离再松开,原来以为在刚滑动出View的时候,View会收到ACTION_CANCEL事件(因为滑出了它的响应范围了),但是其实后面滑出来View以后,ACTION_MOVE/UP还是会被该View处理。刚开始有点想不通,后来才原创 2015-02-03 10:10:16 · 1853 阅读 · 1 评论 -
Android Animator setTarget
一直以来,在使用ObjectAnimator等Animator的时候, animator的Target一般都是直接设置为某个View,常规都是这么用,通过Animator的不断的改变 target view的属性,从而实现动画, 今天发现了一种非常规的用法,比如一个奇葩的需求或者场景, 有两个view,对于view1 要求scale效果,对于view2要求alpha效果,常规可以给这两个view分原创 2015-01-19 13:30:00 · 2318 阅读 · 0 评论