Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/hoanganhtuan95ptit/DraggablePanel

Android library used to create an awesome Android UI based on a draggable element similar to the last YouTube New graphic component.
https://github.com/hoanganhtuan95ptit/DraggablePanel

android animation draggable draggablepanel library youtube youtube-anim youtube-ui

Last synced: 2 months ago
JSON representation

Android library used to create an awesome Android UI based on a draggable element similar to the last YouTube New graphic component.

Awesome Lists containing this project

README

        

## Please switch to [DragView](https://github.com/tuanhav95/DragView), for the best support, thank you

# DraggablePanel

![Alt text](output/ezgif.com-video-to-gif.gif) | ![Alt text](output/Screenshot_20190417-173713.png) | ![Alt text](output/Screenshot_20190417-173738.png)
--- | --- | ---
![Alt text](output/Screenshot_20190417-173732.png) | ![Alt text](output/Screenshot_20190417-173744.png) | ![Alt text](output/Screenshot_20190417-173721.png)

#### Download

```java

allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}


dependencies {
implementation 'com.github.hoanganhtuan95ptit:DraggablePanel:1.2.5'
}
```

#### Using [Detail code java](https://github.com/hoanganhtuan95ptit/DraggablePanel/blob/master/example/src/main/java/com/hoanganhtuan95ptit/example/NormalActivity.kt)

* Xml

```java

```

![Alt text](output/height_when_max.png) | ![Alt text](output/height_when_min.png)
--- | ---

* Listener

```java

draggablePanel.setDraggableListener(object : DraggablePanel.DraggableListener {
override fun onChangeState(state: DraggablePanel.State) {
}

override fun onChangePercent(percent: Float) {
alpha.alpha = 1 - percent
}

})
```

* Add frame

```java
supportFragmentManager.beginTransaction().add(R.id.frameFirst, TopFragment()).commit() // add frame top
supportFragmentManager.beginTransaction().add(R.id.frameSecond, BottomFragment()).commit() // add frame bottom
```

![Alt text](output/addFrame.png)

* Action

```java
btnMax.setOnClickListener { draggablePanel.maximize() }// maximize
btnMin.setOnClickListener { draggablePanel.minimize() }//minimizeo
btnClose.setOnClickListener { draggablePanel.close() }//close
```

#### Custom [Detail code java](https://github.com/hoanganhtuan95ptit/DraggablePanel/blob/master/example/src/main/java/com/hoanganhtuan95ptit/example/CustomActivity.kt)

* Custom
```java
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())
}
}
```

* Xml
```java

```

* Code

```java
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() }
```