模仿 QQ侧边栏 onClick 和 onTouch共存 问题
2016-01-04 16:42
337 查看
package com.infzm.slidingmenu.demo; import android.graphics.PointF; import android.os.Bundle; import android.support.v4.app.Fragment; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnTouchListener; import android.view.Window; import android.widget.ImageView; import android.widget.TextView; import com.infzm.slidingmenu.demo.fragment.LeftFragment; import com.infzm.slidingmenu.demo.fragment.TodayFragment; import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu; import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity; /** * @date 2014/11/14 * @author wuwenjie * @description 主界面 */ public class MainActivity extends SlidingFragmentActivity implements OnClickListener { private ImageView topButton; private Fragment mContent; private TextView topTextView; @Override public void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); // 无标题 super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initSlidingMenu(savedInstanceState); topButton = (ImageView) findViewById(R.id.topButton); topButton.setOnClickListener(this); topTextView = (TextView) findViewById(R.id.topTv); } /** 记录点击的点 */ PointF pointDown = new PointF(); /** * 初始化侧边栏 */ private void initSlidingMenu(Bundle savedInstanceState) { // 如果保存的状态不为空则得到之前保存的Fragment,否则实例化MyFragment if (savedInstanceState != null) { mContent = getSupportFragmentManager().getFragment( savedInstanceState, "mContent"); } if (mContent == null) { mContent = new TodayFragment(); } // 设置左侧滑动菜单 setBehindContentView(R.layout.menu_frame_left); getSupportFragmentManager().beginTransaction() .replace(R.id.menu_frame, new LeftFragment()).commit(); // 实例化滑动菜单对象 SlidingMenu sm = getSlidingMenu(); // 设置可以左右滑动的菜单 sm.setMode(SlidingMenu.LEFT); // 设置滑动阴影的宽度 sm.setShadowWidthRes(R.dimen.shadow_width); // 设置滑动菜单阴影的图像资源 sm.setShadowDrawable(null); // 设置滑动菜单视图的宽度 sm.setBehindOffsetRes(R.dimen.slidingmenu_offset); // 设置渐入渐出效果的值 sm.setFadeDegree(0.35f); // 设置触摸屏幕的模式,这里设置为全屏 sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); // 设置下方视图的在滚动时的缩放比例 sm.setBehindScrollScale(0.0f); sm.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: pointDown.x = event.getX(); pointDown.y = event.getY(); Log.e("pointdown: ", "" + pointDown.x +" , " + pointDown.y); break; case MotionEvent.ACTION_UP: Log.e("pointUp: ", "" + event.getX() +" , " + event.getY()); Log.e("差值:", "" + Math.abs( PointF.length(event.getX() - pointDown.x , event.getY() - pointDown.y ) ) ) ; if (Math.abs( PointF.length(event.getX() - pointDown.x , event.getY() - pointDown.y ) ) > 50f) { toggle(); return true; } break; } return true; } }); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); getSupportFragmentManager().putFragment(outState, "mContent", mContent); } /** * 切换Fragment * * @param fragment */ public void switchConent(Fragment fragment, String title) { mContent = fragment; getSupportFragmentManager().beginTransaction() .replace(R.id.content_frame, fragment).commit(); getSlidingMenu().showContent(); topTextView.setText(title); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.topButton: toggle(); break; default: break; } } }
相关文章推荐
- Java套接字Socket编程--TCP参数
- BP神经网络的优缺点
- How to use softvol to control the master volume
- 数据库设计步骤--了解用户需求:向客户请教
- Java设计模式_结构型_组合模式_树根树叶和树枝
- OPENCV人脸检测实现
- tornado学习笔记18 _RequestDispatcher 请求分发器
- webapi中的路由约束
- codeforces 463E . Caisa and Tree
- 智商太低,竟然算不出病狗神题了
- 米特运输
- 欧拉路径 之 poj 2513 Colored Sticks
- Java 调用 shell 脚本详解
- 笔记记录
- Nginx开启目录浏览
- 屏幕监听
- [置顶] Spring mvc数据转换与格式化
- ImageCoverFlow
- (六)黑马程序员——数据排序
- android-adding animation