Giter VIP home page Giter VIP logo

swipepanel's Introduction

SwipePanel(侧划控件)

Background

对市面上实现的侧划返回不是很满意(仿微信,QQ 通过修改窗口透明坑太多),最终决定还是亲手写一个高实用性的吧,效果如下所示,换个图标,更多划动功能可以由你自己解锁,总共一个 600 多行代码的类,推荐通过阅读源码,你肯定会收获很多哈。

Preview

layout back

Download

Gradle:

implementation 'com.blankj:swipe-panel:1.2'

How to use

动态

final SwipePanel swipePanel = new SwipePanel(this);
swipePanel.setLeftEdgeSize(SizeUtils.dp2px(100));// 设置左侧触发阈值 100dp
swipePanel.setLeftDrawable(R.drawable.base_back);// 设置左侧 icon
swipePanel.wrapView(findViewById(R.id.rootLayout));// 设置嵌套在 rootLayout 外层
swipePanel.setOnFullSwipeListener(new SwipePanel.OnFullSwipeListener() {// 设置完全划开松手后的监听
    @Override
    public void onFullSwipe(int direction) {
        finish();
        swipePanel.close(direction);// 关闭
    }
});

静态

<com.blankj.swipepanel.SwipePanel
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/swipePanel"
        android:background="@color/mediumGray"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".LayoutSwipePanelActivity"
        app:isLeftCenter="false"
        app:leftEdgeSize="100dp"
        app:leftSwipeColor="@color/colorPrimary"
        app:leftDrawable="@drawable/base_back">

    ...

</com.blankj.swipepanel.SwipePanel>

API

方法名 属性名 说明
setLeft(Top, Right, Bottom)SwipeColor app:left(top, right, bottom)SwipeColor 设置左(上、右、下)侧颜色
setLeft(Top, Right, Bottom)EdgeSize app:left(top, right, bottom)EdgeSize 设置左(上、右、下)侧触发阈值
setLeft(Top, Right, Bottom)Drawable app:left(top, right, bottom)Drawable 设置左(上、右、下)侧 icon
setLeft(Top, Right, Bottom)Center app:isLeft(Top, Right, Bottom)Center 设置左(上、右、下)侧是否居中
setLeft(Top, Right, Bottom)Enabled app:isLeft(Top, Right, Bottom)Enabled 设置左(上、右、下)侧是否可用
wrapView --- 设置嵌套在该 view 的外层
setOnFullSwipeListener --- 设置完全划开松手后的监听
setOnProgressChangedListener --- 设置进度变化的监听
isOpen --- 判断是否被划开
close --- 关闭

打个小广告

欢迎加入我的小专栏「基你太美」一起学习。

swipepanel's People

Contributors

blankj avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

swipepanel's Issues

属性设置问题

你好 下面这一句设置颜色无效
swipePanel.setLeftSwipeColor(R.color.colorPrimary);
如果不想要侧滑图标 不设置setLeftDrawable 则侧滑无效

android 8.0手机有问题

Caused by: java.lang.IllegalStateException: Only fullscreen opaque activities can request orientation

java.lang.IllegalArgumentException: pointerIndex out of range

1,错误日志如下:

java.lang.IllegalArgumentException: pointerIndex out of range
    at android.view.MotionEvent.null nativeGetAxisValue(null)(MotionEvent.java)
    at android.view.MotionEvent.null getX(null)(MotionEvent.java:2201)
    at androidx.viewpager.widget.ViewPager.boolean onTouchEvent(android.view.MotionEvent)(ViewPager.java:2241)
    at android.view.View.null dispatchTouchEvent(null)(View.java:11757)
    at android.view.ViewGroup.null dispatchTransformedTouchEvent(null)(ViewGroup.java:2958)
    at android.view.ViewGroup.null dispatchTouchEvent(null)(ViewGroup.java:2636)
    at android.view.ViewGroup.null dispatchTransformedTouchEvent(null)(ViewGroup.java:2964)
    at android.view.ViewGroup.null dispatchTouchEvent(null)(ViewGroup.java:2650)
    at android.view.ViewGroup.null dispatchTransformedTouchEvent(null)(ViewGroup.java:2964)
    at android.view.ViewGroup.null dispatchTouchEvent(null)(ViewGroup.java:2650)
    at com.omnipotent.free.videodownloader.pro.ui.view.SwipePanel.boolean dispatchTouchEvent(android.view.MotionEvent)(SwipePanel.java:493)
    at android.view.ViewGroup.null dispatchTransformedTouchEvent(null)(ViewGroup.java:2964)
    at android.view.ViewGroup.null dispatchTouchEvent(null)(ViewGroup.java:2650)
    at android.view.ViewGroup.null dispatchTransformedTouchEvent(null)(ViewGroup.java:2964)
    at android.view.ViewGroup.null dispatchTouchEvent(null)(ViewGroup.java:2650)
    at android.view.ViewGroup.null dispatchTransformedTouchEvent(null)(ViewGroup.java:2964)
    at android.view.ViewGroup.null dispatchTouchEvent(null)(ViewGroup.java:2650)
    at android.view.ViewGroup.null dispatchTransformedTouchEvent(null)(ViewGroup.java:2964)
    at android.view.ViewGroup.null dispatchTouchEvent(null)(ViewGroup.java:2650)
    at android.view.ViewGroup.null dispatchTransformedTouchEvent(null)(ViewGroup.java:2964)
    at android.view.ViewGroup.null dispatchTouchEvent(null)(ViewGroup.java:2650)
    at com.android.internal.policy.DecorView.null superDispatchTouchEvent(null)(DecorView.java:470)
    at com.android.internal.policy.PhoneWindow.null superDispatchTouchEvent(null)(PhoneWindow.java:1828)
    at android.app.Activity.null dispatchTouchEvent(null)(Activity.java:3302)
    at androidx.appcompat.view.WindowCallbackWrapper.boolean dispatchTouchEvent(android.view.MotionEvent)(WindowCallbackWrapper.java:69)
    at androidx.appcompat.view.WindowCallbackWrapper.boolean dispatchTouchEvent(android.view.MotionEvent)(WindowCallbackWrapper.java:69)
    at com.android.internal.policy.DecorView.null dispatchTouchEvent(null)(DecorView.java:432)
    at android.view.View.null dispatchPointerEvent(null)(View.java:11996)
    at android.view.ViewRootImpl$ViewPostImeInputStage.null processPointerEvent(null)(ViewRootImpl.java:4806)
    at android.view.ViewRootImpl$ViewPostImeInputStage.null onProcess(null)(ViewRootImpl.java:4620)
    at android.view.ViewRootImpl$InputStage.null deliver(null)(ViewRootImpl.java:4158)
    at android.view.ViewRootImpl$InputStage.null onDeliverToNext(null)(ViewRootImpl.java:4211)
    at android.view.ViewRootImpl$InputStage.null forward(null)(ViewRootImpl.java:4177)
    at android.view.ViewRootImpl$AsyncInputStage.null forward(null)(ViewRootImpl.java:4304)
    at android.view.ViewRootImpl$InputStage.null apply(null)(ViewRootImpl.java:4185)
    at android.view.ViewRootImpl$AsyncInputStage.null apply(null)(ViewRootImpl.java:4361)
    at android.view.ViewRootImpl$InputStage.null deliver(null)(ViewRootImpl.java:4158)
    at android.view.ViewRootImpl$InputStage.null onDeliverToNext(null)(ViewRootImpl.java:4211)
    at android.view.ViewRootImpl$InputStage.null forward(null)(ViewRootImpl.java:4177)
    at android.view.ViewRootImpl$InputStage.null apply(null)(ViewRootImpl.java:4185)
    at android.view.ViewRootImpl$InputStage.null deliver(null)(ViewRootImpl.java:4158)
    at android.view.ViewRootImpl.null deliverInputEvent(null)(ViewRootImpl.java:6725)
    at android.view.ViewRootImpl.null doProcessInputEvents(null)(ViewRootImpl.java:6664)
    at android.view.ViewRootImpl.null enqueueInputEvent(null)(ViewRootImpl.java:6625)
    at android.view.ViewRootImpl$WindowInputEventReceiver.null onInputEvent(null)(ViewRootImpl.java:6828)
    at android.view.InputEventReceiver.null dispatchInputEvent(null)(InputEventReceiver.java:192)
    at android.os.MessageQueue.null nativePollOnce(null)(MessageQueue.java)
    at android.os.MessageQueue.null next(null)(MessageQueue.java:325)
    at android.os.Looper.null loop(null)(Looper.java:142)
    at android.app.ActivityThread.null main(null)(ActivityThread.java:6797)
    at java.lang.reflect.Method.null invoke(null)(Method.java)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.null run(null)(Zygote.java:240)
    at com.android.internal.os.ZygoteInit.null main(null)(ZygoteInit.java:772)

2,我这边是把代码拷贝进工程里使用的。
3,出现在7.0 和8.0 的手机上。比较少见。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.