代码思路回顾x3

CardsTravel

FragmentManager

getFragmentManager()
API level 11 之前 getSupportFragmentManager()

addToBackStack(null)

RecyclerView.Adapter

constructor()

至少要有context 然后 数据想办法传进来

onCraeteViewHolder(parent,viewType)

inflate的时候attachRoot = false
忘记了为什么了

  1. 如果root为null,attachToRoot将失去作用,设置任何值都没有意义。

  2. 如果root不为null,attachToRoot设为true,则会给加载的布局文件的指定一个父布局,即root。

  3. 如果root不为null,attachToRoot设为false,则会将布局文件最外层的所有layout属性进行设置,当该view被添加到父view当中时,这些layout属性会自动生效。

  4. 在不设置attachToRoot参数的情况下,如果root不为null,attachToRoot参数默认为true。
    参考

onBindViewHolder(holder,position)

getItemCount():Int

RecyclerView

  • xml声明rv
  • setLayoutManager()look here
    • LinearLayoutManager(context)
    • GridLayoutManager(context,spanCount) //spanCount : 列数
    • StaggeredGridLayoutManager(spanCount,orientation)
  • setAdapter()

    RecyclerView.addOnItemTouchListener()

HoriGroup :RelativeLayout

外部依赖的group
我忘记用来做什么的了

onTouchEvent

  • VelocityTracker
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var velovityTracker:VelocityTracker? = null
    velovityTracker = VelocityTracker.obtain()

    velovityTracker!!.addMovement(event)
    velovityTracker!!.computeCurrentVelocity(1000)
    var xVelocity = velovityTracker.getXVelocity()
    var yVelocity = velovityTracker.getYVelocity()

    if(Math.abs(yVelocity) > Math.abs(xVelocity)) return false
    dealWithXVelocity(xVelocity, mAnimationListener)

思路

  • 判断横向滑动和纵向滑动速度, x>y时处理,否则不处理
  • onLayout的时候测量,重新layout 吧v

分割线

kcat2

思路

MainActivity

主页面,唤起service

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
onCreate
-> initPermission
-> renderPage
-> setListener

initPermission
-> requestPermission
-> onCreate

requestPermission
-> onActivityResult
-> startService

view
.click -> startRunAnimate

startRunAnimate
.onEnd -> startService

KatService

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//service介绍

service
-> startStatus
-> bindStatus

startStatus
-> 后台计算
-> Context.startService()

bindStatus
-> 其他组件与service交互
-> Context.bindService()

Context.startService()
-> ContextImpl.startService(Intent)

ContextImpl.startService(Intent)
-> startServiceComment(Intent,UserHandle)

startServiceComment(Intent,UserHandle)
-> ActivityManagerNative.getDefault().startService(...)

ActivityManagerNative.getDefault()
.startService(...) -> mServices.startServiceLocked()
.mServices -> ActiveServices,辅助AMS进行Service管理
.mServices.startServiceLocked() ->