仿QQ5.0以上新版本侧滑效果

1、此效果使用了csdn大神孙国威的代码案例在此感谢附上参考博客地址:

http://blog.csdn.net/manoel/article/details/39013095/#plain

2、slidingmenu库不需要修改,弄下来可以直接使用

3、demo中的代码是支持单侧的,我仅仅给加了个双侧支持,当然这个只是双侧仅仅是效果上达到了,还有不完善的地方,就是两侧侧滑会有部分主界面布局实际存在但是看不到的情况,这个大家使用的时候会发现,一般稍微粗心点可能看不到。

4、当主界面布局与未隐藏的slidingmenu主布局同时存在时候,右侧侧滑会有一个黑线闪动,目前不知道怎样解决

附上效果图

主界面布局全部代码:(这里两侧的fragment我就不贴了,弄个空白视图就可以,布局也是比较简单的,有点基础就能写)

package com.sunguowei.residemenu;

import android.graphics.Canvas;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu.CanvasTransformer;
import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;
import com.sunguowei.callback.CallBack;

public class MainActivity extends SlidingFragmentActivity implements OnClickListener,CallBack/*implements OnGestureListener*/ {
	private static final String TAG="MainActivity";
    private Fragment mContent;
    SlidingMenu sm = null;
   private CanvasTransformer mTransformer;
   private CanvasTransformer mTransformer2;  

   private Button button_main_open_left;
   private Button button_main_open_right;
   private TextView main_one;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.layout_content);

        button_main_open_left = (Button) findViewById(R.id.button_main_open_left);
        button_main_open_right = (Button) findViewById(R.id.button_main_open_right);
        main_one = (TextView) findViewById(R.id.main_one);
        button_main_open_left.setOnClickListener(this);
        button_main_open_right.setOnClickListener(this);
        setBehindContentView(R.layout.menu_frame);
        getSupportFragmentManager().beginTransaction().replace(R.id.menu_frame, new MenuFragment()).commit();
        //主界面
        mTransformer = new CanvasTransformer() {

			@Override
			public void transformCanvas(Canvas canvas, float percentOpen) {
//				float scale = (float) (percentOpen*0.25 + 0.75);
				float scale = (float) (1 - percentOpen * 0.25);
                canvas.scale(scale, scale, canvas.getWidth()/2, canvas.getHeight()/2);
			}
		};
		//背景层动画
		mTransformer2 = new CanvasTransformer() {

			@Override
			public void transformCanvas(Canvas canvas, float percentOpen) {
				float scale = (float) (percentOpen * 0.25 + 0.75);
                canvas.scale(scale, scale, 0,
                        canvas.getHeight() / 2);
			}
		};
        sm = getSlidingMenu();
        sm.setSecondaryMenu(R.layout.menu_frame2);
        getSupportFragmentManager().beginTransaction().replace(R.id.menu_frame2, new MenuFragment2()).commit();
        sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);
        sm.setFadeEnabled(false);
        sm.setBehindScrollScale(0.25f);
        sm.setFadeDegree(0.75f);
        sm.setMode(SlidingMenu.LEFT_RIGHT);
//        sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
        sm.setBackgroundImage(R.drawable.img_frame_background);
        sm.setBehindWidth((int)(getWindowManager().getDefaultDisplay().getWidth() / 1.35));
        sm.setBehindCanvasTransformer(mTransformer2);
        sm.setAboveCanvasTransformer(mTransformer);

    }
	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch (v.getId()) {
		case R.id.button_main_open_left:
			setToggle();
			break;
		case R.id.button_main_open_right:
			sm.showSecondaryMenu();
			break;

		default:
			break;
		}
	}

	public void setToggle(){
		toggle();
	}
	@Override
	public void SuccessText(String text) {
		// TODO Auto-generated method stub
		Log.i(TAG, "==-->text:="+text);
		main_one.setText(text);
	}

}
时间: 2024-12-17 15:41:57

仿QQ5.0以上新版本侧滑效果的相关文章

仿QQ5.0 里的侧滑菜单效果的实现

今天,我来分享下,侧滑菜单的实现原理,一般android侧滑的实现原理和步骤如下:(源码下载在下面最后给出哈) 1.使用ViewGroup 放2个view,一个是menu菜单,一个是content内容 2.监听onTouchEvent事件 处理ACTION_MOVE中的leftMargin位置,从而改变menu菜单的滑动位置 当ACTION_UP时,根据显示菜单的宽度,决定将其显示或隐藏动画效果: (1)使用Scroller这个辅助类实现动画效果 (2)单起一个Thread(或Task)来改变l

Android 高仿 QQ5.0 侧滑菜单效果 自定义控件来袭【学习鸿洋_视频博客笔记总结】

学习鸿洋博客:http://blog.csdn.net/lmj623565791/article/details/39257409 学习鸿洋视频:慕课网视频 看看Android 高仿 QQ5.0 侧滑菜单效果 自定义控件实现效果: 技术上,继承HorizontalScrollView 加上自定义ViewGroup来实现: 1.onMeasure:决定内部View(子View)的宽和高,以及自己的宽和高 2.onLayout:决定子View的放置位置 3.onTouchEvent[监听动作] 自定

【源码】仿QQ5.0和微信的滑动删除聊天列表

仿QQ5.0和微信的滑动删除聊天列表 功能分类:特效 支持平台:Android 运行环境:Android 开发语言:Java 开发工具:Eclipse 源码大小:2.21MB 下载地址:http://t.cn/R7eluap 源码简介 滑动删除ListView的Itemdemo 源码运行截图    

android用最简单的方法实现QQ5.0的侧边栏滑动效果

先看个效果 使用两个开源项目 开源侧边栏 :me.tangke.slidemenu 开源动画:nineoldandroids-2.4.0.jar 在项目里我使用的是左边activity,右边activity的样式,activityGroup的方式,如果全用Fragment也是一样的,只要获取Fragment的rootView即可; 滑动时用me.tangke.slidemenu是为获取拖动屏幕的比例,其他的菜单栏也可以使用,只是加个动画; 界面所有逻辑代码不动,使用nineoldandroids

Android 高仿 QQ5.0 侧滑菜单效果 自定义控件来袭

1.原理分析 首先对比一下我们上篇的实现距离QQ的效果还有多远: 差距还是蛮大的 区别1.QQ的内容区域会伴随菜单的出现而缩小 区别2.QQ的侧滑菜单给人的感觉是隐藏在内容的后面,而不是拖出来的感觉 区别3.QQ的侧滑菜单有一个缩放以及透明度的效果~ 那么我们如何能做到呢: 对于区别1:这个好办,我们可以在滑动的时候,不断的改变内容区域的大小:如何改变呢?我们在菜单出现的整个过程中,不断记录菜单显示的宽度与其总宽度的比值,是个从0到1的过程,然后把0~1转化为1~0.7(假设内容区域缩小至0.7

【案例分享】仿QQ5.0侧滑菜单ResideMenu

本文由孙国威 原创.如需转载,请注明出处! 为了后续对这个项目进行优化,比如透明度动画.背景图的位移动画,以及性能上的优化. 我把这个项目上传到github上面,请大家随时关注. github地址https://github.com/sunguowei 最近项目要做一个QQ5.0的侧滑菜单效果,和传统的侧滑菜单存在着一些差异.想必大家都已经见识过了. 为了不重复发明轮子,先去github上面搜索了一番. 发现了几个类似的,但是还是有一些不同. 下面是搜索到的类似的开源项目. RESideMenu

【转】仿QQ5.0侧滑菜单ResideMenu

本文由孙国威 原创.如需转载,请注明出处! 原文:http://blog.csdn.net/manoel/article/details/39013095 为了后续对这个项目进行优化,比如透明度动画.背景图的位移动画,以及性能上的优化. 我把这个项目上传到github上面,请大家随时关注. github地址https://github.com/sunguowei 最近项目要做一个QQ5.0的侧滑菜单效果,和传统的侧滑菜单存在着一些差异.想必大家都已经见识过了. 为了不重复发明轮子,先去githu

【案例分享】仿QQ5.0側滑菜单ResideMenu

本文由孙国威 原创.如需转载,请注明出处! 为了兴许对这个项目进行优化,比方透明度动画.背景图的位移动画.以及性能上的优化. 我把这个项目上传到github上面,请大家随时关注. github地址https://github.com/sunguowei 近期项目要做一个QQ5.0的側滑菜单效果.和传统的側滑菜单存在着一些差异. 想必大家都已经见识过了. 为了不反复发明轮子,先去github上面搜索了一番. 发现了几个相似的,可是还是有一些不同. 以下是搜索到的相似的开源项目. RESideMen

仿QQ5.3.1左右滑动效果实现

工作之余无聊,研究一下QQ的特效,不过还是有些区别的! 效果图如下: 左滑: 右滑: 滑动是实现主要是HorizontalScrollView来实现的,可能会与qq的有些区别,但是大致效果还是出来了! 区别: 1.可以左右滑动,qq的不可以右滑. 2.左滑和右滑的背景切换效果和qq的有区别 3.还有些细节上的差别 主要实现代码如下: import android.content.Context; import android.content.res.TypedArray; import andr