Please switch to DragView , for the best support, thank you
DraggablePanel
Download
allprojects {
repositories {
...
maven { url ' https://jitpack.io' }
}
}
dependencies {
implementation ' com.github.hoanganhtuan95ptit:DraggablePanel:1.2.5'
}
< com.hoanganhtuan95ptit.draggable. DraggablePanel
android: id= " @+id/draggablePanel"
android: layout_width= " match_parent"
android: layout_height= " match_parent"
app: height_when_max= " 300dp"
app: height_when_min= " 80dp"
app: margin_bottom_when_min= " 8dp"
app: margin_edge_when_min= " 8dp"
app: percent_when_middle= " 0.9"
app: state= " MIN" / >
draggablePanel. setDraggableListener(object : DraggablePanel . DraggableListener {
override fun onChangeState(state: DraggablePanel . State ) {
}
override fun onChangePercent(percent: Float ) {
alpha. alpha = 1 - percent
}
})
supportFragmentManager. beginTransaction(). add(R . id. frameFirst, TopFragment()). commit() // add frame top
supportFragmentManager. beginTransaction(). add(R . id. frameSecond, BottomFragment()). commit() // add frame bottom
btnMax. setOnClickListener { draggablePanel. maximize() }// maximize
btnMin. setOnClickListener { draggablePanel. minimize() }// minimizeo
btnClose. setOnClickListener { draggablePanel. close() }// close
class DraggableSource @JvmOverloads constructor(
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : DraggablePanel(context, attrs, defStyleAttr) {
var mWidthWhenMax = 0
var mWidthWhenMiddle = 0
var mWidthWhenMin = 0
init {
getFrameFirst(). addView(inflate(R . layout. layout_top))
getFrameSecond(). addView(inflate(R . layout. layout_bottom))
}
override fun initFrame () {
mWidthWhenMax = width
mWidthWhenMiddle = (width - mPercentWhenMiddle * mMarginEdgeWhenMin). toInt()
mWidthWhenMin = mHeightWhenMin * 22 / 9
super . initFrame()
}
override fun refreshFrameFirst () {
super . refreshFrameFirst()
val width = if (mCurrentPercent < mPercentWhenMiddle) {
(mWidthWhenMax - (mWidthWhenMax - mWidthWhenMiddle) * mCurrentPercent)
} else {
(mWidthWhenMiddle - (mWidthWhenMiddle - mWidthWhenMin) * (mCurrentPercent - mPercentWhenMiddle) / (1 - mPercentWhenMiddle))
}
frameTop. reWidth(width. toInt())
}
}
< com.hoanganhtuan95ptit.example.custom. DraggableSource
android: id= " @+id/draggablePanel"
android: layout_width= " match_parent"
android: layout_height= " match_parent"
app: height_when_max= " 300dp"
app: height_when_min= " 80dp"
app: margin_bottom_when_min= " 8dp"
app: margin_edge_when_min= " 8dp"
app: percent_when_middle= " 0.9"
app: state= " MIN" / >
draggablePanel. setDraggableListener(object : DraggablePanel . DraggableListener {
override fun onChangeState(state: DraggablePanel . State ) {
}
override fun onChangePercent(percent: Float ) {
alpha. alpha = 1 - percent
shadow. alpha = percent
}
})
supportFragmentManager. beginTransaction(). add(R . id. frameTop, TopFragment()). commit()
supportFragmentManager. beginTransaction(). add(R . id. frameBottom, BottomFragment()). commit()
btnMax. setOnClickListener { draggablePanel. maximize() }
btnMin. setOnClickListener { draggablePanel. minimize() }
btnClose. setOnClickListener { draggablePanel. close() }