Android 滑动菜单的实现
2015-10-22 21:22
453 查看
这个代码主要是为了写滑动菜单的实现。实现效果如图左图为主页面图,右图为滑动之后的结果图
实现代码见连接 http://download.csdn.net/detail/w472398682/9204585
![](http://img.blog.csdn.net/20151022214352495?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20151022214400883?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
实现代码见连接 http://download.csdn.net/detail/w472398682/9204585
package com.haiwangch.floatview; import android.app.Activity; import android.os.Bundle; import android.util.DisplayMetrics; import android.util.Log; import android.view.Display; import android.view.MotionEvent; import android.view.View; import android.view.WindowManager; import android.widget.LinearLayout; public class MainActivity extends Activity implements View.OnTouchListener { //侧滑的主页面 private LinearLayout content; //菜单页面 private LinearLayout menu; private LinearLayout.LayoutParams contentParams; private LinearLayout.LayoutParams menuParams; //触摸屏移动的位移 private float xDown; private float xMove; private float xUp; private int screenWidth; //给主页面留下的空间 private int contenRight = 100; //判断是主页面还是菜单位于显示页面 boolean isContent = true; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); content = (LinearLayout)findViewById(R.id.content); menu = (LinearLayout) findViewById(R.id.menu); contentParams =(LinearLayout.LayoutParams) content.getLayoutParams(); menuParams = (LinearLayout.LayoutParams) menu.getLayoutParams(); content.setOnTouchListener(this); screenWidth = getScreenWidth(); contentParams.width =screenWidth; menuParams.width =screenWidth - contenRight; menuParams.leftMargin = -menuParams.width; menu.setLayoutParams(menuParams); content.setLayoutParams(contentParams); } @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()){ case MotionEvent.ACTION_DOWN: xDown = event.getRawX(); menu.setLayoutParams(menuParams); // Log.i("Down","down"); break; case MotionEvent.ACTION_MOVE: xMove = event.getRawX(); float distance = xMove - xDown; if (isContent){ if (menuParams.leftMargin>= (-menuParams.width)){ menuParams.leftMargin =(int)((-menuParams.width) + distance); // Log.i("Move","move111111111"); if (menuParams.leftMargin>=0){ menuParams.leftMargin = 0; isContent = false; } if (menuParams.leftMargin<=(-menuParams.width)){ menuParams.leftMargin = -menuParams.width; isContent = true; } } }else { if (menuParams.leftMargin>= (-menuParams.width)){ // menuParams.leftMargin =(int)((-menuParams.width) + distance); menuParams.leftMargin = (int)distance; if (menuParams.leftMargin>=0){ menuParams.leftMargin = 0; isContent = false; } if (menuParams.leftMargin<=(-menuParams.width)){ menuParams.leftMargin = -menuParams.width; isContent = true; } } } menu.setLayoutParams(menuParams); break; case MotionEvent.ACTION_UP: xUp = event.getRawX(); if (isInContetn()){ if (menuParams.leftMargin>=(-menuParams.width)){ if ((xUp - xDown) >(getScreenWidth()/2)){ menuParams.leftMargin = 0; } if ((xUp - xDown) < (-(getScreenWidth()-contenRight)/2)){ menuParams.leftMargin = -menuParams.width; } if (menuParams.leftMargin>=0){ menuParams.leftMargin = 0; isContent = false; } if (menuParams.leftMargin<=(-menuParams.width)){ menuParams.leftMargin = -menuParams.width; isContent = true; } } } menu.setLayoutParams(menuParams); Log.i("UP","up"); break; } return true; } public int getScreenWidth(){ WindowManager windowManager = getWindowManager(); Display display = windowManager.getDefaultDisplay(); DisplayMetrics displayMetrics = new DisplayMetrics(); display.getMetrics(displayMetrics); return displayMetrics.widthPixels; } public boolean isInContetn(){ if (menuParams.leftMargin <0){ return true; } return false; } }
相关文章推荐
- Android下屏幕翻转 TextView和EditText保存内容
- Android四大基本组件介绍与生命周期
- 仿小米和iphone日历效果,基于Android week view
- LinnerLayout divider 属性 添加分隔线
- Android下自动折行 效果
- android开发中EditText自动获取焦点时隐藏hint的代码
- Android基于WebView的Java和JS相互调用实现步骤,附带精简可行的DEMO
- 使用Android Studio混淆打包(ProGuard基础语法和打包配置)
- Android学习【9】PreferenceFragment偏好设置(一)
- android 自定义progressDialog 之二
- Android Support v4、v7、v13 介绍
- Android Wear 交互表面设计及Android 双击事件监测实现
- 《第一行代码Android》学习日记6
- Android自定义圆形头像
- Android开源框架Universal-Image-Loader详解
- Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)
- Android开源项目 分类 便于查看
- 开始使用Glide图片缓存
- Android之CSDN 牛人博客索引
- Android custom dialog