Android 自定义View:时间轴效果实现

Posted 匆忙拥挤repeat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 自定义View:时间轴效果实现相关的知识,希望对你有一定的参考价值。

这些年,也没有遇到具体需求,需要我来写这个效果的。这次巧了,它(需求)来了。
当时写第一版就有效果了,只是达不到UI的要求。恩,这不重要,重要的是思路。

思路很简单:

  1. 一个自定义view;
  2. 一个枚举类来表示其不同的状态,并刷新重绘;
  3. 将该view组合到 RecyclerView.Adapter的itemView中。

不完整示例代码(kotlin 版):

class TimeLineView : View 
	enum class ViewType 
        TOP_CIRCLE, BOTTOM_CIRCLE, LINE
    
	
	fun setTimeViewType(type: TimeLineView.ViewType) 
        mViewType = type
        invalidate()
    
    
	override fun onDraw(canvas: Canvas) 
		when (mViewType) 
			 ViewType.TOP_CIRCLE -> drawTopCicle()
			 ViewType.BOTTOM_CIRCLE -> drawBottomCircle()
			 else -> drawLine()
		
	


class TaskAdapter : RecyclerView.Adapter<RecyclerView.ViewHolder>() [
	 override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) 
	 	val task = mData[position]
	 	val timeViewType = when (task.type) 
	 		1 -> ViewType.TOP_CIRCLE
	 		2 -> ViewType.BOTTOM_CIRCLE
	 		else -> ViewType.LINE
	 	
	 	holder.itemView.time_line_tl.setTimeViewType(timeViewType)
	 

以上是关于Android 自定义View:时间轴效果实现的主要内容,如果未能解决你的问题,请参考以下文章

自定义View之文字图形图片的阴影

android自定义View实现会议时间的占比效果

android自定义View实现会议时间的占比效果

Android - View之自定义View实现“刮刮卡”效果

Android 中自定义ViewGroup实现流式布局的效果

Android自定义view之利用drawArc方法实现动态效果