Skip to content

Commit

Permalink
sample config demo
Browse files Browse the repository at this point in the history
  • Loading branch information
lilei committed Feb 20, 2019
1 parent af49ed6 commit c25fd01
Show file tree
Hide file tree
Showing 6 changed files with 109 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,32 +24,30 @@ public class CardLayoutHelper<T> {
*/
public static class Config {

static Config DEFAULT = new Config();

/**
* 旋转最大角度
*/
float maxRotation = 10;
public float maxRotation = 10;

/**
* 展示的卡片个数,最小是2个
*/
int cardCount =2;
public int cardCount =2;

/**
* 卡片位置之间的偏移量
*/
int offset = Utils.dp2px(8);
public int offset = Utils.dp2px(8);

/**
* 动画执行时间
*/
long duration = 250;
public long duration = 250;

/**
* 拖拽时触发移除的阈值比例
*/
float swipeThreshold = 0.2f;
public float swipeThreshold = 0.2f;

public Config() {
}
Expand Down Expand Up @@ -167,7 +165,7 @@ public void setOnCardLayoutListener(OnCardLayoutListener onCardLayoutListener) {
public void attachToRecyclerView(RecyclerView recyclerView) {
mRecyclerView = recyclerView;
if (mConfig == null) {
mConfig = Config.DEFAULT;
mConfig = new Config();
}
mAnimatorStackManager = new CardAnimatorManager();
mAnimatorStackManager.setRotation(mConfig.maxRotation);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public class JKCardLayoutManager extends RecyclerView.LayoutManager {
private CardLayoutHelper.State mState = CardLayoutHelper.State.IDLE;


private CardLayoutHelper.Config mConfig = CardLayoutHelper.Config.DEFAULT;
private CardLayoutHelper.Config mConfig = new CardLayoutHelper.Config();

JKCardLayoutManager(RecyclerView mRecyclerView, CardAnimatorManager mAnimatorStackManager) {
this.mRecyclerView = mRecyclerView;
Expand Down
37 changes: 35 additions & 2 deletions sample/src/main/java/me/hiten/jkcardlayout/sample/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@ import android.graphics.Color
import android.os.Build
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.text.SpannableString
import android.text.Spanned
import android.text.method.LinkMovementMethod
import android.text.style.ClickableSpan
import android.util.Log
import android.view.Gravity
import android.view.View
Expand All @@ -30,21 +34,24 @@ class MainActivity : AppCompatActivity() {

private lateinit var mCardLayoutHelper : CardLayoutHelper<CardEntity>


private lateinit var mConfig : CardLayoutHelper.Config

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setStatusBar()

mCardLayoutHelper = CardLayoutHelper()

val config = CardLayoutHelper.Config()
mConfig = CardLayoutHelper.Config()
.setCardCount(2)
.setMaxRotation(20f)
.setOffset(8.dp)
.setSwipeThreshold(0.2f)
.setDuration(200)

mCardLayoutHelper.setConfig(config)
mCardLayoutHelper.setConfig(mConfig)

mCardLayoutHelper.attachToRecyclerView(recycler_view)

Expand Down Expand Up @@ -92,6 +99,8 @@ class MainActivity : AppCompatActivity() {
pull_down_layout.setParallaxRatio(1.1f)
//设置动画时长
pull_down_layout.setDuration(200)

updateConfigShow()
}

@Suppress("UNCHECKED_CAST")
Expand Down Expand Up @@ -174,4 +183,28 @@ class MainActivity : AppCompatActivity() {
}
}

private fun updateConfigShow(){
val text = "卡片数:${mConfig.cardCount} | 偏移像素:${mConfig.offset} | 最大旋转角度:${mConfig.maxRotation} | 拖拽触发阈值${mConfig.swipeThreshold} | 下拉菜单阻尼:${pull_down_layout.getDragRatio()} | 下拉视觉差比例${pull_down_layout.getParallaxRatio()}"
val list = text.split("|")
val spannableString = SpannableString(text)
var start = 0
for (index in 0 until list.size){
val item = list[index]
val end = start + item.length
spannableString.setSpan(object :ClickableSpan(){
override fun onClick(widget: View) {
showDialog(item)
}
},start,end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE)
start+=item.length + 1
}
tv_show_config.text = spannableString
tv_show_config.movementMethod = LinkMovementMethod.getInstance()
}

private fun showDialog(title:String){
val settingDialogFragment = SettingDialogFragment.newInstance(title)
settingDialogFragment.show(supportFragmentManager,"dialog_setting")
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package me.hiten.jkcardlayout.sample

import android.os.Bundle
import android.support.v4.app.DialogFragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import kotlinx.android.synthetic.main.dialog_setting.*

class SettingDialogFragment : DialogFragment(){



companion object {

const val KEY_TITLE = "title"

fun newInstance(title: String):SettingDialogFragment{
val settingDialogFragment = SettingDialogFragment()
val bundle = Bundle()
bundle.putString(KEY_TITLE,title)
settingDialogFragment.arguments = bundle
return settingDialogFragment
}
}

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.dialog_setting,container,false)
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
arguments?.let {
val title = it.getString(KEY_TITLE)
tv_title.text = title
}
}

}
6 changes: 5 additions & 1 deletion sample/src/main/res/layout/activity_main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,13 @@
android:background="#cccccc"
/>
<TextView
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:id="@+id/tv_show_config"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="底部导航栏"
android:textSize="11sp"
android:lineSpacingExtra="4dp"
android:textColor="#333333"
android:gravity="center"
/>
Expand Down
23 changes: 23 additions & 0 deletions sample/src/main/res/layout/dialog_setting.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:padding="30dp"
android:orientation="vertical">


<TextView
android:minWidth="200dp"
android:id="@+id/tv_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textSize="30sp" />

<android.support.v7.widget.AppCompatSeekBar
android:id="@+id/seek_bar"
android:layout_width="match_parent"
android:layout_height="50dp"
/>
</LinearLayout>

0 comments on commit c25fd01

Please sign in to comment.