这篇文章主要为大家详细介绍了 Android 仿微信 activity 滑动关闭的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Android 是一种基于 Linux 的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由 Google 公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用 "安卓" 或 "安致"。
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>
来源: http://www.phperz.com/article/17/0317/320567.html