上滑滑动
一.在app的build添加依赖
implementation 'com.sothree.slidinguppanel:library:3.4.0'//滑动框架
二。布局底部添加布局
@mipmap/ic_hd_x
,!--遮布-->
<View
android:id="@+id/hat_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/color_80000000"
android:visibility="gone" />
<com.sothree.slidinguppanel.SlidingUpPanelLayout
xmlns:sothree="http://schemas.android.com/apk/res-auto"
android:id="@+id/sliding_layout"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_52"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
app:behavior_peekHeight="0dp"
android:gravity="bottom"
sothree:umanoDragView="@+id/dragView"
sothree:umanoOverlay="false"
sothree:umanoPanelHeight="@dimen/dp_45"
sothree:umanoParallaxOffset="@dimen/dp_45"
sothree:umanoScrollableView="@+id/rl_list"
sothree:umanoShadowHeight="0dp"
sothree:umanoClipPanel="true">
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#00000000" />
<!-- 滑动布局 -->
<RelativeLayout
android:id="@+id/dragView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:focusable="false">
<RelativeLayout
android:id="@+id/pull_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#FFFFFF">
<!--iv_hd是一条横线 需要则自己添加-->
<ImageView
android:id="@+id/iv_hd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/dp_05"
android:src="@mipmap/iv_hd"/>
<TextView
android:id="@+id/tv_sz"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/iv_hd"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/dp_10"
android:layout_marginBottom="@dimen/dp_10"
android:drawableLeft="@mipmap/ic_hd_x"
android:drawablePadding="@dimen/dp_10"
android:text="滑动展开设置"
android:textColor="#13BA58"
android:textSize="@dimen/sp_14" />
</RelativeLayout>
<RelativeLayout
android:id="@+id/rl_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/pull_layout"
android:background="@color/white">
<!--自己随意填充布局-->
</RelativeLayout>
</com.sothree.slidinguppanel.SlidingUpPanelLayout>
三。代码设置
private SlidingUpPanelLayout mLayout;
private View hatView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_equipment_details);
hatView = findViewById(R.id.hat_view);
Paneview();//上滑滑动画板
}
/**
* 上滑滑动画板
*/
private void Paneview() {
mLayout = findViewById(R.id.sliding_layout);
mLayout.setCoveredFadeColor(Color.parseColor("#00000000"));
mLayout.addPanelSlideListener(new SlidingUpPanelLayout.PanelSlideListener() {
@Override
public void onPanelSlide(View panel, float slideOffset) {
Log.i(TAG, "onPanelSlide, offset " + slideOffset);
}
@Override
public void onPanelStateChanged(View panel, SlidingUpPanelLayout.PanelState previousState, SlidingUpPanelLayout.PanelState newState) {
float pxValue = getResources().getDimension(R.dimen.dp_350);//默认dp值; 显示的时候高度动态设置大
hatView.setVisibility(View.VISIBLE);//显示
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) mLayout.getLayoutParams();
if (mLayout.getPanelState().toString().equals(SlidingUpPanelLayout.PanelState.COLLAPSED.toString())) {
hatView.setVisibility(View.GONE);//layout_height隐藏
pxValue = getResources().getDimension(R.dimen.dp_52);//获取对应资源文件下的dp值 隐藏状态高度设小 不然会引起滑动冲突
} else if (mLayout.getPanelState().toString().equals(SlidingUpPanelLayout.PanelState.EXPANDED.toString())) {
hatView.setVisibility(View.VISIBLE);//显示
pxValue = getResources().getDimension(R.dimen.dp_350);//获取对应资源文件下的dp值 显示的时候高度动态设置大
}
//获取当前控件的布局对象
params.height = (int) pxValue;//设置当前控件布局的高度
mLayout.setLayoutParams(params);
}
});
}
四.Values下的dimens.xml文件
<resources>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="dp_00">0dp</dimen>
<dimen name="dp_01">1dp</dimen>
<dimen name="dp_02">2dp</dimen>
<dimen name="dp_03">3dp</dimen>
<dimen name="dp_04">4dp</dimen>
<dimen name="dp_05">5dp</dimen>
<dimen name="dp_06">6dp</dimen>
<dimen name="dp_07">7dp</dimen>
<dimen name="dp_08">8dp</dimen>
<dimen name="dp_09">09dp</dimen>
<dimen name="dp_10">10dp</dimen>
<dimen name="dp_11">11dp</dimen>
<dimen name="dp_12">12dp</dimen>
<dimen name="dp_13">13dp</dimen>
<dimen name="dp_14">14dp</dimen>
<dimen name="dp_15">15dp</dimen>
<dimen name="dp_16">16dp</dimen>
<dimen name="dp_17">17dp</dimen>
<dimen name="dp_18">18dp</dimen>
<dimen name="dp_19">19dp</dimen>
<dimen name="dp_20">20dp</dimen>
<dimen name="dp_21">21dp</dimen>
<dimen name="dp_22">22dp</dimen>
<dimen name="dp_23">23dp</dimen>
<dimen name="dp_24">24dp</dimen>
<dimen name="dp_25">25dp</dimen>
<dimen name="dp_26">26dp</dimen>
<dimen name="dp_27">27dp</dimen>
<dimen name="dp_28">28dp</dimen>
<dimen name="dp_30">30dp</dimen>
<dimen name="dp_32">32dp</dimen>
<dimen name="dp_33">33dp</dimen>
<dimen name="dp_34">34dp</dimen>
<dimen name="dp_35">35dp</dimen>
<dimen name="dp_38">38dp</dimen>
<dimen name="dp_40">40dp</dimen>
<dimen name="dp_45">45dp</dimen>
<dimen name="dp_46">46dp</dimen>
<dimen name="dp_48">48dp</dimen>
<dimen name="dp_50">50dp</dimen>
<dimen name="dp_52">52dp</dimen>
<dimen name="dp_57">57dp</dimen>
<dimen name="dp_70">70dp</dimen>
<dimen name="dp_75">75dp</dimen>
<dimen name="dp_60">60dp</dimen>
<dimen name="dp_80">80dp</dimen>
<dimen name="dp_85">85dp</dimen>
<dimen name="dp_90">90dp</dimen>
<dimen name="dp_100">100dp</dimen>
<dimen name="dp_105">105dp</dimen>
<dimen name="dp_120">120dp</dimen>
<dimen name="dp_125">125dp</dimen>
<dimen name="dp_130">130dp</dimen>
<dimen name="dp_135">135dp</dimen>
<dimen name="dp_145">145dp</dimen>
<dimen name="dp_150">150dp</dimen>
<dimen name="dp_180">180dp</dimen>
<dimen name="dp_250">250dp</dimen>
<dimen name="dp_300">300dp</dimen>
<dimen name="dp_350">350dp</dimen>
<dimen name="dp_400">400dp</dimen>
<dimen name="dp_430">430dp</dimen>
<dimen name="dp_600">600dp</dimen>
</resources>