android侧滑效果的实现
来源:互联网 发布:大数据修炼系统 顶点 编辑:程序博客网 时间:2024/06/05 12:10
玩手机QQ多了,越来越喜欢他的侧滑效果,所以就自己模仿做了一个效果。文章大不凡来源于点击打开链接,感谢这位兄弟的例子。
package com.example.sidelip;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;import android.view.WindowManager;import android.widget.ArrayAdapter;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.SimpleAdapter;public class MainActivity extends Activity implements OnTouchListener {private android.widget.LinearLayout.LayoutParams menuParams;private android.widget.LinearLayout.LayoutParams contentParams;LinearLayout menuLayout;LinearLayout contentLayout;private int size ; //设备的宽度private float startX;private float endX;private float translateX;private float moveX;private boolean menushow=false;private int menuPanding=400;private int maxMove=400;private ListView menulist;private ListView contentlist;private String[] menus={"list1","list2","list3"};private int[] Ids={R.drawable.tab1,R.drawable.tab2,R.drawable.tab3};private String[] contents={"content1","content2","content3"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.d("ceshi", "ceshoi"); init(); } private void init() {// TODO Auto-generated method stub /* * 关于布局的 */menuLayout=(LinearLayout) findViewById(R.id.menu);contentLayout=(LinearLayout) findViewById(R.id.content);menuParams=(LinearLayout.LayoutParams) menuLayout.getLayoutParams();contentParams=(LinearLayout.LayoutParams) contentLayout.getLayoutParams();WindowManager wm=(WindowManager) getSystemService(WINDOW_SERVICE);size=wm.getDefaultDisplay().getWidth();menuParams.width=menuPanding;menuParams.leftMargin=-menuPanding;contentParams.width=size;contentLayout.setOnTouchListener(this);/* * 数据绑定的 */menulist=(ListView) findViewById(R.id.menuList);contentlist=(ListView) findViewById(R.id.contentList); ArrayAdapter<String> arrayAdapter=new ArrayAdapter<String>(getApplicationContext(),R.layout.contentitem,contents);contentlist.setAdapter(arrayAdapter);List<Map<String,Object>> menulists= new ArrayList<Map<String,Object>>();for(int i=0;i<Ids.length;i++){Map item=new HashMap<String, Object>();item.put("image", Ids[i]);item.put("text", contents[i]);menulists.add(item);}SimpleAdapter sm=new SimpleAdapter(getApplicationContext(),menulists, R.layout.menuitem, new String[]{"image","text"},new int[]{R.id.menuimage,R.id.menuText});menulist.setAdapter(sm); }@Overridepublic boolean onTouch(View v, MotionEvent event) {// TODO Auto-generated method stub switch(event.getAction()){ case MotionEvent.ACTION_DOWN: startX=event.getRawX(); Log.d("show", "手指按下!"); break; case MotionEvent.ACTION_MOVE: moveX=event.getRawX(); translateX=moveX-startX;if(!menushow&&translateX>0){if(translateX>maxMove){menuParams.leftMargin=0;menushow=true;}else{menuParams.leftMargin=(int) (translateX-menuPanding);}};if(menushow&&translateX<0){if(translateX<-maxMove){menuParams.leftMargin=-menuPanding;menushow=false;}else{menuParams.leftMargin=(int) translateX;}};menuLayout.setLayoutParams(menuParams); Log.d("show", "手指移动!"); break; case MotionEvent.ACTION_UP: endX=event.getRawX(); translateX=endX-startX; if(translateX<maxMove&&translateX>-maxMove){ menuParams.leftMargin=-menuPanding;menushow=false;} menuLayout.setLayoutParams(menuParams); break; }return true;}private void showMenu(float x) {// TODO Auto-generated method stubif(x>0&&!menushow){menuParams.leftMargin=(int) (x-menuPanding); menuLayout.setLayoutParams(menuParams);}if(x<0&&menushow){menuParams.leftMargin=(int) x; menuLayout.setLayoutParams(menuParams);}} }
下面是activity的main布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" tools:context=".MainActivity" android:background="@drawable/backgroud" > <LinearLayout android:id="@+id/menu" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ListView android:id="@+id/menuList" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> <LinearLayout android:id="@+id/content" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:background="#fff"> <ListView android:id="@+id/contentList" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> </LinearLayout>
该例子中menu在左,content在右,以LinearLayout 布局排列,主要通过设置menuParams.leftMargin改变左边界,实现滑动效果。
0 0
- android侧滑效果的实现
- Android实现仿QQ5.0的侧滑效果
- Android侧滑显示菜单栏效果的实现
- Android 侧滑导航效果实现
- android 动画实现侧滑菜单效果
- Android侧滑抽屉效果实现
- [Android] 侧滑效果另一种实现
- Android ViewDragHelper实现 侧滑删除效果
- Android下蒙板效果的实现
- Android透明效果的实现
- android的半透明效果实现
- Android透明效果的实现
- android振动效果的实现
- Android下蒙板效果的实现
- android的半透明效果实现
- android抽屉效果的实现
- android振动效果的实现
- android实现的毛玻璃效果
- 【数据结构】USACO clocks
- Apache Commons Lang之toString()实现
- cocos2dx3.2 谈谈精灵也能加入触摸事件回调函数简单使用,呢吗有木有更有的方法
- Linux监控软件之nmon
- java时间相差8个小时的解决方法
- android侧滑效果的实现
- OSGi与equinox创建高度模块化的java系统 第六章 DS模块 遇到的问题
- tcpdump出现no suitable device found 原因
- Android TextView修改文字样式
- 链式队列
- 网络图片下载并保存本地
- leetcode 125-Valid Palindrome
- 九九乘法表
- nginx监听一个端口多域名转发配置