
Android View
文章平均质量分 68
fyfcauc
这个作者很懒,什么都没留下…
展开
-
RecyclerView机制分析: Recycler
Recycler虽然命名上看,像是只承担了View回收的职责,其真正的定位是RecyclerView的View提供者(甚至是管理者), 包括生成新View, 复用旧View,回收View,重新绑定View等逻辑都被封装在Recycler中。外部调用者只需要调用Recycler的接口获取合适的View即可,不需要关心View获取和配置等具体细节,Recycler对外提供了View的回收和获取服务。先原创 2017-01-11 12:14:18 · 5708 阅读 · 5 评论 -
ViewUtils
项目 ViewUtils的总结:一般一个成熟长期的项目必然会有一堆XXXUtils/Helper之类的静态工具/单例类,这些类最大的作用是消除code duplicate,以及屏蔽实现细节,对于android这种API经常变的平台,Utils包装细节可以很好的和系统版本解耦。计划将这些Utils类整理一下维护到自己的github上去,以后不用再重新发明轮子。简单总结一个原创 2015-03-19 15:55:40 · 676 阅读 · 0 评论 -
Night模块(一)
Night模块(一)Night模块是前期的试手项目,虽然比较简单,不过因为本blog的目的就是记录所有自己的工作点滴,因此这个也不会漏掉.NightMode其中一个组件就是提供一个夜间日间模式切换的动画,产品和设计给的设计稿就是一个太阳/月亮按照某种可计算的轨迹升起/落下,并且伴随着整个APP界面的渐变亮/暗.此UI组件NightToggleAnimatioVi原创 2015-03-10 22:04:40 · 633 阅读 · 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 评论 -
generateDefaultLayoutParams()
在ViewGroup, 以及几种基本的Layout类中都有这个函数,分别生成自己所定义扩展的LayoutParams, 在某个Layout中需要生成一个LayouParamst的时候,可以方便使用无需自己根据当前所处Layout的类来确定new哪一种LayoutParams./** * Returns a set of default layout parameters.原创 2015-01-16 15:03:48 · 1850 阅读 · 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 评论 -
DownLoad模块 (五)
DownLoad模块 (五)DownloadItemView代表DownloadFragment上每一个Download对应的View,展示该Download的进度,状态,名称等信息。设计为base abstarct class。DownloadItemView直接extends LinearLayout, 又承担一部分的C,实现了onClickListener和 onLongCl原创 2015-02-27 17:49:54 · 647 阅读 · 0 评论 -
Download模块 (九)
Download模块 (九)DownloadsFragment类是负责展现当前Download信息的fragment, 按照需要extends FullscreenFragment,同样遵循惯例,实现了几个Listener 作为 C 的聚合. DownloadsFragment自身所展示的View比较简单,不过里面有一个container view, 该container vi原创 2015-02-28 14:57:57 · 650 阅读 · 0 评论 -
Download模块 (十六)
Download模块 (十六)Notification类算是一个比较独立的模块以及一个工具性的C+V角色比较好>。所有方法都是static的,类实际搞成一个static的都可以。或者单例模式。构造函数直接privateNotification内部没有实现什么listener,设计的时候不想让Nofticiation主动感知Download,而是应该作为一个被动的工具被调用。原创 2015-03-03 16:28:12 · 572 阅读 · 0 评论 -
android requestLayout等重绘分析
基于4.4.3ViewRootImpl.java scheduleTraversals()会先判断是否有 mTraversalRunnable 被post到 mChoreographer那里,如果没有,那么就post一个mTraversalRunnable(CALLBACK类型是Choreographer.CALLBACK_TRAVERSAL)到mChoreogr原创 2014-11-04 11:36:57 · 1641 阅读 · 0 评论 -
ViewFlow 源码阅读笔记(1)
1. ViewFlow, 继承自AdapterView, 基本和ViewPager差不多,不过可以动态的增加View, 自行维护了一个SideBuffer*2大小的view buffer, 提升用户体验,可以作为xml属性设置。 A horizontally scrollable ViewGroup with items populated from an Adapter.原创 2015-05-05 11:24:04 · 556 阅读 · 0 评论 -
Android Fragment 体系源码跟踪笔记(3)
通常使用的supportv4的FragmentManager(一个接口)的具体实现就在其嵌套类FragmentManagerImpl中:beginTransaction()返回的其实一个FragmentTransaction的实现子类: BackStackRecord.executePendingTransactions(),就是调用execPendingActions()罢了,之前解释的已经很清原创 2015-05-13 18:10:23 · 926 阅读 · 0 评论 -
Android Adapter机制 源码笔记(6): AbsListView(2)
AbsListView中的回收器: RecycleBin: RecycleBin实现了在一次一次的layout的过程中对于View的回收重用机制, 有两层的的view storage: ActiveViews层和ScrapViews层. 其中,ActionView层指的是layout开始时就展现在screen上的那些view,在layout完成以后, 所有在ActionViews层的view都会降级原创 2015-05-19 10:46:19 · 544 阅读 · 0 评论 -
RecyclerView机制解析: ChildHelper
RecyclerView在处理消失动画时采用了和Animation/LayoutTranslation相似的策略:某个ChildView需要渐变消失动画效果,那么该ChildView在动画结束前不会从ViewGroup中被remove掉,在动画运行完以后才会被remove掉。上述策略显然会造成不一致:Data中,ChildView对应的Item已经被remove了(数据remove不会因为有动画就延原创 2017-01-07 15:58:28 · 2681 阅读 · 0 评论 -
ImageView的测量与绘制机制解析
mAdjustViewBounds属性True when ImageView is adjusting its bounds to preserve the aspect ratio of its drawable如果允许adjustViewBounds,ScaleType会强行设置为FIT_CENTERMaxWidth/MaxHeight机制: 要生效的话,必须setAdjustViewBou原创 2016-11-18 16:45:17 · 962 阅读 · 0 评论 -
Android NestedScroll笔记
NestedScrollingParent和NestedScrollingChild这套协议的目的是为了增强(或者说反转)Android自上而下的MotionEvent传递流,这条流的传递方向是死的,一条路走到天黑不回头,单向的好处是简单,坏处就是反方向的体系内通信基本不可能了。对于某些应用场景,希望在MotionEvent传递到下级以后,还有机会可以回馈给上级一些信息,就从原来的自上而下变成了自原创 2016-09-02 16:39:06 · 1476 阅读 · 1 评论 -
Android View的second layout pass
Second layout pass的触发: 首先在View的requestLayout()中:如果之前有mMeasureCache,因为要重新layout,之前的cache已经无效了,直接mMeasureCache.clear()来清除缓存.如果该View已经被attach了(mAttachInfo != null)并且AttachInfo中的mViewRequestingLayout(Used原创 2015-11-25 16:23:00 · 3116 阅读 · 0 评论 -
Android MotionEvent传递流程 源码笔记
ViewGroup的boolean dispatchTouchEvent(MotionEvent ev):mInputEventConsistencyVerifier是处于debug目的使用,可以忽略。onFilterTouchEventForSecurity(MotionEvent event)来检测这个MotionEvent是否应该被dispatch. 只有通过了,才能继续向下走.使用act原创 2015-12-12 15:01:23 · 1557 阅读 · 0 评论 -
ViewGroup measure 源码笔记(1)
ViewGroup:LinearLayout/FrameLayout在onMeasure(…)的时候都会调用在ViewGroup定义的protected measureChildWithMargins(View child, int parentWidthMeasureSpec, int widthUsed, int parentHeightMeasureSpec, int heightUsed)原创 2015-08-25 12:17:43 · 390 阅读 · 0 评论 -
Android Adapter机制 源码笔记(5): AbsListView(1)
abstract class AbsListView extends AdapterView implements ……..: 注意,AbsListView里的”List”指的是这个View的data set形式是list(有点不准确),而非这个View真的是一个ListView的形式, 其呈现形式也是完全自定的(layoutChildren()由子类来确定自己的layout方式)里说的很清楚了.原创 2015-05-19 10:45:05 · 657 阅读 · 1 评论 -
Android Adapter机制 源码笔记(4): AdapterView
abstract class AdapterView extends ViewGroup: 注释已经将其定位解释的很好了: An AdapterView is a view whose children are determined by an link Adapter. AdapterView的家族还是挺庞大的, 除了Android自带的ListView/GridView/Spinne原创 2015-05-19 10:44:42 · 940 阅读 · 0 评论 -
ViewFlow 源码笔记(2)
为了在手势操作的阈值判断上和系统保持一致,在init()的时候据根据传入的context取得了ViewConfiguration:final ViewConfiguration configuration = ViewConfiguration.get(getContext()), 这个函数就是根据context对应的display的dimension/density(当前的实现中是density)原创 2015-06-19 14:42:16 · 993 阅读 · 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 · 2000 阅读 · 2 评论 -
2.3 setVisiblity GONE 仍能响应事件
在适配2.3设备时,遇到一个问题, 将一个view已经设为GONE了,但是仍能收到touch事件,后来查了下stackoverflow,http://stackoverflow.com/questions/9333220/buttons-within-view-are-still-clickable-even-though-views-visibility-is-goneandroid的v原创 2014-11-14 11:42:59 · 1618 阅读 · 0 评论 -
getWindowVisibleDisplayFrame DisplayUtil.getScreenSize() VKB影响
getWindowVisibleDisplayFrame得到的rect的尺寸是受VKB出现/消失的影响的。而DisplayUtil.getScreenSize()则不会.原创 2015-02-04 18:16:21 · 643 阅读 · 0 评论 -
Android系列教程之九:GridView组件的使用
写道GridView是一个网络布局的视图,他能让你的元素显示在一个个的格子里。我们的桌面就是一个GridView。。 Android系列教程目录:Android教程之一:Window下搭建Android开发环境Android教程之二:Linux下搭建Android开发环境Android教程之三:第一个Android应用,HelloWorldAndro转载 2015-01-19 17:19:46 · 377 阅读 · 0 评论 -
Android FrameLayout的android:foreground属性可以设置单击时的前景色
触摸之后,设置前景色,可以告诉用户确实单击了,增加用户体验。[java] view plaincopy"@drawable/pressed_backgorund_corner" > [html] view plaincopyxml version="1.0" encoding="utf-8"?> selector xmlns转载 2015-02-06 15:56:59 · 661 阅读 · 0 评论 -
android:scaleType属性
ImageView.ScaleType.CENTER|android:scaleType="center" 以原图的几何中心点和ImagView的几何中心点为基准,按图片的原来size居中显示,不缩放,当图片长/宽超过View的长/宽,则截取图片的居中部分显示ImageView的size.当图片小于View 的长宽时,只显示图片的size,不剪裁。ImageView.ScaleType.C转载 2015-01-19 14:01:30 · 505 阅读 · 0 评论 -
Android 用户界面---菜单(Menus 二)
From: http://blog.youkuaiyun.com/think_soft/article/details/7350177创建上下文菜单上下文菜单提供了影响指定项目或UI中内容结构的动作。你能够给任何View对象提供一个内容菜单,但是它们最常用于ListView、GridView或集合类型的View对象的项目中,用户能够执行每个项目上的动作。有两个方法来提供上下文动作:1. 在一转载 2015-02-05 11:50:23 · 645 阅读 · 0 评论 -
[Android学习笔记]自定义控件的使用
From: http://www.cnblogs.com/hellenism/p/3672351.html自定义控件时,最好抽象得彻底,并且编写需严谨,因为可能程序中多处都会引用到它,或者提供给团队中的其他人使用。 其一般步骤为:1.创建控件的类文件,定义其功能逻辑。一般继承自现有控件或者View2.在res/values目录下创建attrs.xml文件,用于定义该控件的x转载 2015-01-15 14:36:40 · 464 阅读 · 0 评论 -
android android:duplicateParentState="true" "false"
From: http://blog.youkuaiyun.com/ysh06201418/article/details/39641419 今天要做一个效果,组件RelativeLayout上有两个TextView,这两个TextView具有不同的颜色值,现在要的效果是,当RelativeLayout被点击时,整个item有高亮背景。同时这两个TextView要变色。就是父控件响应点击事转载 2015-01-16 09:45:35 · 453 阅读 · 0 评论 -
Android ProgressBar自定义图片进度,自定义渐变色进度条
1234567java.lang.Object ↳ android.view.View ↳ android.widget.ProgressBar直接子类AbsSeekBar间接子类RatingBar, SeekBarFrom: http://my.oschina.net/am转载 2015-01-29 15:43:04 · 1330 阅读 · 0 评论 -
Android imageView图片按比例缩放
点击打开链接 原作者android:scaleType可控制图片的缩放方式,示例代码如下:[html] view plaincopyprint?ImageView android:id="@+id/img" android:src="@drawable/logo" android:scaleType="centerInside"转载 2015-01-28 15:10:27 · 497 阅读 · 0 评论 -
Android View的ScrollBar
From: http://www.cnblogs.com/frydsh/archive/2012/09/18/2691011.htmlAndroid中的View对于ScrollBar和Scroll的支持是非常灵活的,不仅仅是UI样式可变,计算参数的方式也是可变的。 在Android中,任何View都可以显示出ScrollBar,唯一的条件是自身高度不足以显示全部内容。转载 2015-01-25 21:48:51 · 578 阅读 · 0 评论 -
Night模块(二)
Night模块(二)NightMode的具体实现这个手法值得梳理归纳一下.首先,NightMode的切换并不是简单的变暗/亮,而是整体配色方案的变化,注意是整体,有一个View没有变过来就会造成强烈的违和感.整体配色方案的变化包括了很多细节, View的background, 字体颜色,如果显示图像,也要变原创 2015-03-11 14:20:11 · 775 阅读 · 0 评论 -
Tab 模块 总结
Tab 模块总结从整体上对TabMenu这个模块的一些设计分析:为了实现全屏推拉TabMenu,MovingMenu是叠在mainUI上面的,两者都在一个FrameLayout中,并且MovingMenu都是match_parent来实现了全屏覆盖.MovingMenu作为FrameLayout,本身没有设置backGround,因此是透明的,而里面的两个View组件,原创 2015-03-09 18:47:28 · 1652 阅读 · 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 评论 -
Tab 模块 (二)
Tab 模块 (二)一个TabMenu也是由一组View组成的,因此 extends了LinearLayout,而为了模拟拖拽某个TabView到tabMenu外,和TabMenu同一级的还有一个用于代表托拽时的TabView的辅助性View.平常不可见,只有在托拽某个TabView时,才会截取TabView的内容到自己,然后显示在相应的托拽位置,并响应以后操作.项目中经常原创 2015-03-06 17:36:26 · 923 阅读 · 0 评论 -
Tab 模块 (五)
Tab 模块 (五)TabViewListAdapter extends BaseAdapter.Adapter承载了M和C的角色, 同时因为自己实现的ListView没有实现convertView机制,因此在Adapter里面搞了一套View cache机制来提升性能.而由此也引入了ViewHolder这个优化手段,直接将View的每个子View的引用也用这种方式ca原创 2015-03-09 14:26:17 · 694 阅读 · 0 评论 -
android selector 自定义 drawable state
selector 的运作原理 这一篇已经讲的很清楚了:http://blog.youkuaiyun.com/guolin_blog/article/details/17045157最后一步显示是通过DrawableContainer的selectDrawable(int idx)然后mCurrDrawable.setVisible(......) 来实现的图像变化。目前项目中实现夜间模原创 2014-12-15 11:43:06 · 1769 阅读 · 0 评论