自定義view移動整個view

2021-10-12 19:49:16 字數 2532 閱讀 7553

時間比較短,直接上**了:

import android.animation.objectanimator

import android.content.context

import android.graphics.pointf

import android.util.attributeset

import android.util.log

import android.view.motionevent

import android.view.viewconfiguration

import androidx.cardview.widget.cardview

import androidx.constraintlayout.widget.constraintlayout

import me.frame.mvvm.utils.displayutils

import kotlin.math.abs

class myconstraintlayout(context: context, attrs: attributeset?) : constraintlayout(context, attrs)

//這個是繪製完執行的

override fun onfinishinflate() , durationdefault)

}/**

* new 這裡是第一種,根據view的translationy方法來上下移動整個view,而不是裡面的內容

scrollto 和scrollby 是移動view裡面的內容

* */

private var lastnewy = 0f

private var isnewtoporbottom = false

private var isnewhide = false

private var transy = 0f

private var transx= 0f

private var downpoint = pointf()

private var midden = 0f

private var defaultnegative = -550f

private var default = 550f

private var durationdefault = 200l

override fun ontouchevent(event: motionevent?): boolean else

motionevent.action_move ->

motionevent.action_up, motionevent.action_cancel -> else

} else }}

super.ontouchevent(event)}}

private fun onactionmove(event: motionevent)

} else else

}downpoint.y = event.rawy

downpoint.x = event.rawx

}//這個方法也可行,但是比較生硬沒有動畫,因為是直接繪製,用的是layou 方法也可以實現,

// override fun ontouchevent(event: motionevent?): boolean else

// }

// }

// motionevent.action_move ->

// istoporbottom = false

// } else

// layout(left, top + abs(dy).toint(), right, bottom + abs(dy).toint())

// istoporbottom = true

// }

// lasty = event.rawy.toint()

// }

// motionevent.action_cancel ->

// motionevent.action_up -> else

// ishide = false

// } else

// }

// }

// super.ontouchevent(event)

// }

// }

}

就這點**也花了很長的時間,主要的是對自定義view非常的不熟悉導致,以後還要多加熟悉。

Android自定義View 一 View的測量

想要讓系統繪製出你所需要的圖形,就必須告訴系統view的大小,所以,在繪製view時,先實現view的onmesure 方法。在測量view之前,要先了解measurespec這個類,measurespec物件中包含了測量的模式和測量的大小 measurespec.exactly 精確模式 當我們將...

自定義view 二

自定義view的最重要的乙個部分是自定義它的外觀。根據你的程式的需求,通過ondraw方法實現繪製。在ondraw中,會傳遞給你乙個canvas。canvas封裝了繪製圖形的方法。還需要自定義乙個 paint去定義顏色樣式的填充 簡單來說 canvas定義你在螢幕上畫的圖形,而paint定義顏色,樣...

自定義View筆記

1.帶刪除按鈕的listview 將觸控事件交給手勢處理器處理 return gesturedetector.ontouchevent event override public boolean ondown motionevent e return false override public vo...