您的位置:首页 > 其它

鸿洋大神的博客笔记汇总

2017-05-10 17:26 323 查看
Android 手把手教您自定义ViewGroup(一)  http://blog.csdn.net/lmj623565791/article/details/38339817

1、ViewGroup的职责是啥? 

给childView计算出建议的宽和高和测量模式 ;决定childView的位置;为什么只是建议的宽和高,而不是直接确定呢,别忘了childView宽和高可以设置为wrap_content,这样只有childView才能计算出自己的宽和高。

2、View的职责是啥?

View的职责,根据测量模式和ViewGroup给出的建议的宽和高,计算出自己的宽和高;同时还有个更重要的职责是:在ViewGroup为其指定的区域内绘制自己的形态。

3、ViewGroup和LayoutParams之间的关系?

这是因为每个ViewGroup需要指定一个LayoutParams,用于确定支持childView支持哪些属性,比如LinearLayout指定LinearLayout.LayoutParams等。如果大家去看LinearLayout的源码,会发现其内部定义了LinearLayout.LayoutParams,在此类中,你可以发现weight和gravity的身影。

4.从API角度进行浅析

上面叙述了ViewGroup和View的职责,下面从API角度进行浅析。

View的根据ViewGroup传人的测量值和模式,对自己宽高进行确定(onMeasure中完成),然后在onDraw中完成对自己的绘制。

ViewGroup需要给View传入view的测量值和模式(onMeasure中完成),而且对于此ViewGroup的父布局,自己也需要在onMeasure中完成对自己宽和高的确定。此外,需要在onLayout中完成对其childView的位置的指定。

Android 自定义ViewGroup 实战篇 -> 实现FlowLayout  http://blog.csdn.net/lmj623565791/article/details/38352503/
http://blog.csdn.net/lmj623565791/article/details/46405409   Android 自己实现 NavigationView [Design Support Library(1)]

对于上述NavigationView可能也会存在定制上的问题,比如我希望选中的Item左边有个高亮的竖线之类的效果。那么,针对于各种需求,想要能解决各种问题,最好的方式就是说对于NavigationView的效果自己可以实现。

解决思路,参考NavigationView源码,其实就是一个多种item的listview,上面addHeaderview
http://blog.csdn.net/lmj623565791/article/details/39185641  Android 自定义控件打造史上最简单的侧滑菜单
解决思路:写一个自定义viewgroup去继承HorizontalScrollView
http://blog.csdn.net/lmj623565791/article/details/39257409   Android 高仿 QQ5.0 侧滑菜单效果 自定义控件来袭

解决思路:(1)我们可以在滑动的时候,不断的改变内容区域的大小;如何改变呢?我们在菜单出现的整个过程中,不断记录菜单显示的宽度与其总宽度的比值,是个从0到1的过程,然后把0~1转化为1~0.7(假设内容区域缩小至0.7);不断去缩小内容区域

           (2)在onScrollChanged中去实现它
http://blog.csdn.net/lmj623565791/article/details/41531475  Android DrawerLayout 高仿QQ5.2双向侧滑菜单  

解决思路:DrawerLayout的使用
http://blog.csdn.net/lmj623565791/article/details/39670935   Android 实现形态各异的双向侧滑菜单 自定义控件来袭
http://blog.csdn.net/lmj623565791/article/details/48393217    Android TagFlowLayout完全解析 一款针对Tag的布局
http://blog.csdn.net/lmj623565791/article/details/43371299   Android 打造形形色色的进度条 实现可以如此简单<
97ed
br />
http://blog.csdn.net/lmj623565791/article/details/45059587   Android RecyclerView 使用完全解析 体验艺术般的控件
http://blog.csdn.net/lmj623565791/article/details/51118836   为RecyclerView打造通用Adapter 让RecyclerView更加好用
http://blog.csdn.net/lmj623565791/article/details/51854533  Android 优雅的为RecyclerView添加HeaderView和FooterView
http://blog.csdn.net/lmj623565791/article/details/43131133   Android 打造炫目的圆形菜单 秒秒钟高仿建行圆形菜单
http://blog.csdn.net/lmj623565791/article/details/42628537  Android Fragment 你应该知道的一切

这篇文章是对Android programming the big nerd ranch guide 一书的总结

(1)在Fragment中存在startActivityForResult()以及onActivityResult()方法,但是呢,没有setResult()方法,用于设置返回的intent,这样我们就需要通过调用getActivity().setResult(ListTitleFragment.REQUEST_DETAIL, intent);。

(1)fragment能够从Activity中接收返回结果,但是其自设无法产生返回结果,只有Activity拥有返回结果。

(2)FragmentPagerAdapter:对于不再需要的fragment,选择调用detach方法,仅销毁视图,并不会销毁fragment实例。

FragmentStatePagerAdapter:会销毁不再需要的fragment,当当前事务提交以后,会彻底的将fragmeng从当前Activity的FragmentManager中移除,state标明,销毁时,会将其onSaveInstanceState(Bundle outState)中的bundle信息保存下来,当用户切换回来,可以通过该bundle恢复生成新的fragment,也就是说,你可以在onSaveInstanceState(Bundle outState)方法中保存一些数据,在onCreate中进行恢复创建。

(3)Fragment间的数据传递:dialog.setTargetFragment(ContentFragment.this, REQUEST_EVALUATE);
http://blog.csdn.net/lmj623565791/article/details/37970961   Android Fragment 真正的完全解析(上)

 Android Fragment 真正的完全解析(下)  http://blog.csdn.net/lmj623565791/article/details/37992017

Android 官方推荐 : DialogFragment 创建对话框  http://blog.csdn.net/lmj623565791/article/details/37815413
http://blog.csdn.net/lmj623565791/article/details/40481055   Android Context 上下文 你必须知道的一切

实际上,只要把握住一点,凡是跟UI相关的,都应该使用Activity做为Context来处理;其他的一些操作,Service,Activity,Application等实例都可以,当然了,注意Context引用的持有,防止内存泄漏。
http://blog.csdn.net/lmj623565791/article/details/45460089   Android 屏幕适配方案

1.多用match_parent

2.多用weight

3.自定义view解决
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: