Android仿微信activity滑动关闭效果

Android仿微信activity滑动关闭功能

1.利用具体利用v4包下的slidingPaneLayout实现透明的activity,代码如下:

BaseActivity:
public class BaseSlideCloseActivity extends AppCompatActivity implements
  SlidingPaneLayout.PanelSlideListener {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  initSlideBackClose();
  super.onCreate(savedInstanceState);
 }

 private void initSlideBackClose() {
  if (isSupportSwipeBack()) {
   SlidingPaneLayout slidingPaneLayout = new SlidingPaneLayout(this);
   // 通过反射改变mOverhangSize的值为0,
   // 这个mOverhangSize值为菜单到右边屏幕的最短距离,
   // 默认是32dp,现在给它改成0
   try {
    Field overhangSize = SlidingPaneLayout.class.getDeclaredField("mOverhangSize");
    overhangSize.setAccessible(true);
    overhangSize.set(slidingPaneLayout, 0);
   } catch (Exception e) {
    e.printStackTrace();
   }
   slidingPaneLayout.setPanelSlideListener(this);
   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 添加内容视图
   slidingPaneLayout.addView(decorChild, 1);
  }
 }

 protected boolean isSupportSwipeBack() {
  return true;
 }

 @Override
 public void onPanelSlide(View panel, float slideOffset) {

 }

 @Override
 public void onPanelOpened(View panel) {
  finish();
 }

 @Override
 public void onPanelClosed(View panel) {

 }
}

activity 透明style:

<resources xmlns:tools="http://schemas.android.com/tools">

 <!-- Base application theme. -->
 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
  <!-- Customize your theme here. -->
  <item name="colorPrimary">@color/colorPrimary</item>
  <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
  <item name="colorAccent">@color/colorAccent</item>
 </style>

 <style name="DIY.SlideClose.Transparent.Theme" parent="AppTheme">
  <item name="android:windowBackground">@android:color/transparent</item>
  <item name="android:windowIsTranslucent">true</item>
  <item name="android:windowAnimationStyle">@style/DIY.Animation.SlidingBack</item>
  <item name="android:actionBarStyle">@style/DIYActionBar.Custom</item>
 </style>

 <style name="DIYActionBar.Custom" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
  <item name="displayOptions">showCustom</item>
  <item name="android:background">@android:color/transparent</item>
  <item name="background">@android:color/transparent</item>
  <item name="android:displayOptions" tools:ignore="NewApi">showCustom</item>
  <item name="android:height">?actionBarSize</item>
 </style>

 <style name="DIY.Animation.SlidingBack" parent="@android:style/Animation.Activity">
  <item name="android:activityOpenEnterAnimation">@anim/slide_in_right</item>
  <item name="android:activityOpenExitAnimation">@anim/slide_out_right</item>
  <item name="android:activityCloseEnterAnimation">@anim/slide_in_right</item>
  <item name="android:activityCloseExitAnimation">@anim/slide_out_right</item>
  <item name="android:wallpaperOpenEnterAnimation">@anim/slide_in_right</item>
  <item name="android:wallpaperOpenExitAnimation">@anim/slide_out_right</item>
  <item name="android:wallpaperCloseEnterAnimation">@anim/slide_in_right</item>
  <item name="android:wallpaperCloseExitAnimation">@anim/slide_out_right</item>
  <item name="android:wallpaperIntraOpenEnterAnimation">@anim/slide_in_right</item>
  <item name="android:wallpaperIntraOpenExitAnimation">@anim/slide_out_right</item>
  <item name="android:wallpaperIntraCloseEnterAnimation">@anim/slide_in_right</item>
  <item name="android:wallpaperIntraCloseExitAnimation">@anim/slide_out_right</item>
 </style>

</resources>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android中Activity滑动关闭的效果

    最近感觉有一个Activity关闭的效果挺不错的,就是手势滑动就可以关闭当前Activity,于是就想写一篇博客和大家一起分享下!废话不多说,老规矩,还先上效果图,更直观! 项目地址:https://github.com/xinyitiandi/SlidingFinishDemo 上代码: 1.第一个Activity: package com.ekeguan.slidingfinishdemo; import android.content.Intent; import android.os.B

  • Android实现退出时关闭所有Activity的方法

    本文示例实现了Android退出时关闭所有Activity的功能,分享给大家供大家参考之用.具体方法如下: 一般来说,在Android退出时,有的Activity可能没有被关闭.为了在Android退出时关闭所有的Activity,这里给出了以下的类: //关闭Activity的类 public class CloseActivityClass{ public static List<Activity> activityList = new ArrayList<Activity>(

  • Android利用Intent启动和关闭Activity

    一.简介 Android应用程序中一般都有多个Activity,在Activity中,通过调用StartActivity方法,并在该方法的参数中传递Intent对象,就可以实现不同Activity之间的切换和数据传递. 通过StartActivity方法传递intent对象来启动另一个Activity时,可分为两类: l 显式启动:在创建的Intent对象中明确指定启动的是哪个Activity: l 隐式启动:安卓系统根据Intent的动作和数据决定应该启动哪个Activity. 1.显式启动A

  • Android 侧滑关闭Activity的实例

    Android 侧滑关闭Activity的实例 实现原因 其实侧滑关闭activity在网上也有大量的文章去介绍他,我也有去看,要么是代码实在太多看不下去,要么就是跑了项目没有反应的.唯一的方法还是自己随手鲁一个~,侧滑这个东西在Android中是比较少见的,iOS是最常见不过了,因为毕竟他们没有物理返回键.还有UIScrollView那些.然而我们用的最多的QQ也只是有个功能,并没有真正的滑动效果.至于微信的,我记得N久以前滑出了一个bug.也没什么印象了.估计也是极小的概率事件.于是,当初我

  • Android 关闭多个Activity的实现方法

    Android 关闭多个Activity的实现方法 总的来说有四种方法: 1.使用Application来进行关闭 public class App extends Application { private static List<Activity> lists = new ArrayList<>(); public static void addActivity(Activity activity) { lists.add(activity); } public static

  • Android仿微信activity滑动关闭效果

    Android仿微信activity滑动关闭功能 1.利用具体利用v4包下的slidingPaneLayout实现透明的activity,代码如下: BaseActivity: public class BaseSlideCloseActivity extends AppCompatActivity implements SlidingPaneLayout.PanelSlideListener { @Override protected void onCreate(Bundle savedIns

  • Android仿微信左右滑动点击切换页面和图标

    本文实例为大家分享了Android仿微信左右滑动点击切换页面和图标的具体代码,供大家参考,具体内容如下 目标效果: 使用鼠标滑动屏幕或者点击下边的小图标,可以更改页面和图标,因为没有那么多素材所以只用了两张图片区分. 1.layout文件夹下新建top.xml页面,作为顶部标题. top.xml页面: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="h

  • Android仿微信文章悬浮窗效果的实现代码

    序言 前些日子跟朋友聊天,朋友Z果粉,前些天更新了微信,说微信出了个好方便的功能啊,我问是啥功能啊,看看我大Android有没有,他说现在阅读公众号文章如果有人给你发微信你可以把这篇文章当作悬浮窗悬浮起来,方便你聊完天不用找继续阅读,听完是不是觉得这叫啥啊,我大Android微信版不是早就有这个功能了吗,我看文章的时候看到过有这个悬浮按钮,但是我一直没有使用过,试了一下还是挺方便的,就想着自己实现一下这个功能,下面看图,大家都习惯了无图言X 原理 看完动图我们来分析一下,如何在每个页面上都存在一

  • Android仿微信通讯录滑动快速定位功能

    先给大家展示下效果图: 实现代码如下: 下面简单说下实现原理. public class IndexBar extends LinearLayout implements View.OnTouchListener { private static final String[] INDEXES = new String[]{"#", "A", "B", "C", "D", "E", &qu

  • Android仿微信长按菜单效果

    本文实例为大家分享了Android仿微信长按菜单展示的具体代码,供大家参考,具体内容如下 FloatMenu A menu style pop-up window that mimics WeChat.仿微信的长按菜单. 效果如下 引入方法: Github地址:https://github.com/JavaNoober/FloatMenu dependencies { .... compile 'com.noober.floatmenu:common:1.0.2' } 使用说明 使用方法1: A

  • Android 仿微信底部渐变Tab效果

    先来看一下效果图 除了第三个的发现Tab有所差别外,其他的基本还原了微信的底部Tab渐变效果 每个Tab都是一个自定义View,根据ImageView的tint属性来实现颜色渐变效果,tint属性的使用可以看我的上一篇文章 我将自定义View命名为ShadeView,包含四个自定义属性 意思分别为图标.背景色.底部文本.底部文本大小 <declare-styleable name="ShadeView"> <attr name="icon" for

  • Android仿微信页面底部导航效果代码实现

    大家在参考本地代码的时候要根据需要适当的修改,里面有冗余代码小编没有删除.好了,废话不多说了,一切让代码说话吧! 关键代码如下所示: .java里面的主要代码 public class MainActivity extends BaseActivity implements TabChangeListener { private Fragment[] fragments; private FragZaiXianYuYue fragZaiXianYuYue; private FragDaoLuJi

  • Android仿微信通讯录列表侧边栏效果

    先看Android仿微信通讯录列表侧边栏效果图 这是比较常见的效果了吧 列表根据首字符的拼音字母来排序,且可以通过侧边栏的字母索引来进行定位. 实现这样一个效果并不难,只要自定义一个索引View,然后引入一个可以对汉字进行拼音解析的jar包--pinyin4j-2.5.0即可 首先,先来定义侧边栏控件View,只要直接画出来即可. 字母选中项会变为红色,且滑动时背景会变色,此时SideBar并不包含居中的提示文本 public class SideBar extends View { priva

  • Android仿微信顶/底部菜单栏效果

    本文要实现仿微信微信底部菜单栏+顶部菜单栏,采用ViewPage来做,每一个page对应一个XML,当手指在ViewPage左右滑动时,就相应显示不同的page(其实就是xml)并且同时改变底部菜单按钮的图片变暗或变亮,同时如果点击底部菜单按钮,左右滑动page(其实就是xml)并且改变相应按钮的亮度. 一.布局 1.顶部菜单布局,命名为top_layout.xml <?xml version="1.0" encoding="utf-8"?> <R

  • Android仿微信列表滑动删除 如何实现滑动列表SwipeListView

    接上一篇,本篇主要讲如何实现滑动列表SwipeListView. 上篇完成了滑动控件SwipeItemView,这个控件是一个自定义的ViewGroup,作为列表的一个item,为列表提供一些方法让这个SwipeItemView能滑动其视图内容,同时滑动过程中会有顺滑的动画效果.而本篇讲的SwipeListView则是这个列表的具体实现了.当然啦,这个SwipeListView继承自ListView,为了实现我们需要的功能,重点就是重写ListView的onTouchEvent()以及onInt

随机推荐