美文网首页
android左滑返回关闭Activity

android左滑返回关闭Activity

作者: 常朋_android | 来源:发表于2019-01-24 09:38 被阅读0次
        记一次实现左滑关闭页面 返回上个页面,虽然实现的不完美 但这也是一种实现方式 记录学习的过程
         实现方式是v4 包下的 SlidingPaneLayout 
    
    
         private void SlideBackClose() {
                  SlidingPaneLayout slidingPaneLayout = new SlidingPaneLayout(this);
        try {
            Field overhangSize = SlidingPaneLayout.class.getDeclaredField("mOverhangSize");
            overhangSize.setAccessible(true);
            overhangSize.set(slidingPaneLayout, 0);
        } catch (Exception e) {
            e.printStackTrace();
        }
        slidingPaneLayout.setPanelSlideListener(new SlidingPaneLayout.PanelSlideListener() {
            @Override
            public void onPanelSlide(View panel, float slideOffset) {
    
            }
    
            @Override
            public void onPanelOpened(View panel) {
                finish();
            }
    
            @Override
            public void onPanelClosed(View panel) {
    
            }
        });
        slidingPaneLayout.setSliderFadeColor(getResources()
                .getColor(android.R.color.transparent));
        View leftView = new View(this);
        leftView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
        slidingPaneLayout.addView(leftView, 0);
        ViewGroup decorView = (ViewGroup) getWindow().getDecorView();
        ViewGroup decorChild = (ViewGroup) decorView.getChildAt(0);
        decorChild.setBackgroundColor(getResources()
                .getColor(android.R.color.white));
        decorView.removeView(decorChild);
        decorView.addView(slidingPaneLayout);
        slidingPaneLayout.addView(decorChild, 1);
          }
    

    然后设置Activity的主题

     <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"/>
    
    <style name="SlidingBack.Theme" parent="AppTheme">
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowAnimationStyle">@style/SlidingBack</item>
    </style>
    
    <style name="SlidingBack" parent="@android:style/Animation.Activity">
    <item name="android:activityOpenEnterAnimation">@anim/sliding_in_right</item>
    <item name="android:activityOpenExitAnimation">@anim/sliding_out_right</item>
    <item name="android:activityCloseEnterAnimation">@anim/sliding_in_right</item>
    <item name="android:activityCloseExitAnimation">@anim/sliding_out_right</item>
    <item name="android:wallpaperOpenEnterAnimation">@anim/sliding_in_right</item>
    <item name="android:wallpaperOpenExitAnimation">@anim/sliding_out_right</item>
    <item name="android:wallpaperCloseEnterAnimation">@anim/sliding_in_right</item>
    <item name="android:wallpaperCloseExitAnimation">@anim/sliding_out_right</item>
    <item name="android:wallpaperIntraOpenEnterAnimation">@anim/sliding_in_right</item>
    <item name="android:wallpaperIntraOpenExitAnimation">@anim/sliding_out_right</item>
    <item name="android:wallpaperIntraCloseEnterAnimation">@anim/sliding_in_right</item>
    <item name="android:wallpaperIntraCloseExitAnimation">@anim/sliding_out_right</item>
    </style>
    

    sliding_in_right

    <set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false"
    android:zAdjustment="top">
    <translate
        android:duration="200"
        android:fromXDelta="100.0%p"
        android:toXDelta="0.0" />
    
    </set>
    

    sliding_out_right

    <set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false"
    android:zAdjustment="top">
    <translate
        android:duration="200"
        android:fromXDelta="0.0"
        android:toXDelta="100.0%p" />
    
    </set>
    

    相关文章

      网友评论

          本文标题:android左滑返回关闭Activity

          本文链接:https://www.haomeiwen.com/subject/nqzejqtx.html