Android 左右侧滑示例

Android 左右侧滑示例。可以自已设置侧滑的效果,我在这里实现是左右都可以。侧滑出来的界面可以启动activity,或者加载view。侧滑效果是用了碎片规则来处理的。详细注释在代码里面,先看实现效果图,再看项目结构以及资源文件分布。代码只贴部分,提供本文源码下载链接。

源码下载:点击

1、实现效果图

2、项目结构图

3、资源分布图

4、LeftFragment

package com.org.fragment;

import com.org.activity.R;
import com.org.activity.TestActivity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;

public class LeftFragment extends Fragment implements OnClickListener{
	private LayoutInflater mInflater;

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		View view = inflater.inflate(R.layout.main_left_fragment, container,
				false);
		initView(view);
		return view;
	}

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
	}

	@Override
	public void onResume() {
		super.onResume();
	}

	private void initView(View view) {
		//要从getactivity获取 Context上下文句柄,用来加载其他需要的view布局
		mInflater = LayoutInflater.from(getActivity());

		view.findViewById(R.id.button1).setOnClickListener(this);

	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.button1:
			//在碎片处理中启动activity
			Intent toChatIntent = new Intent(getActivity(),
					TestActivity.class);
			startActivity(toChatIntent);
			break;

		default:
			break;
		}

	}

}

5、RightFragment

package com.org.fragment;

import com.org.activity.R;
import com.org.slidinglayer.SlidingLayer;
import com.org.slidinglayer.SlidingLayer.OnInteractListener;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.TextView;

public class RightFragment extends Fragment implements OnClickListener ,OnInteractListener{
	private LayoutInflater mInflater;
	private SlidingLayer mSlidingLayer;

	private View mTestView;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
	}

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		View view = inflater.inflate(R.layout.main_right_fragment, container,
				false);
		initView(view);
		return view;
	}

	private void initView(View view) {
		view.findViewById(R.id.button1).setOnClickListener(this);

		//RightFragment里面的页面的滑动的实现类
		mSlidingLayer = (SlidingLayer) view.findViewById(R.id.right_sliding_layer);
		mSlidingLayer.setOnInteractListener(this);

		//要从getactivity获取 Context上下文句柄
		mInflater = LayoutInflater.from(getActivity());

		//显示测试的view页面,通过LayoutInflater加载view的页面
		mTestView = mInflater.inflate(R.layout.activity_test, null);
		//是谁的view就用谁的mTestView.findViewById
		TextView testTextView = (TextView)mTestView.findViewById(R.id.textView1);
		testTextView.setText("测试显示view");
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.button1:
			mSlidingLayer.removeAllViews();// 先移除所有的view,不然会报错
			if (!mSlidingLayer.isOpened()) {
				mSlidingLayer.addView(mTestView);
				mSlidingLayer.openLayer(true);
			}
			break;
		default:
			break;
		}
	}

	@Override
	public void onOpen() {
		// TODO Auto-generated method stub

	}

	@Override
	public void onClose() {
		// TODO Auto-generated method stub

	}

	@Override
	public void onOpened() {
		// TODO Auto-generated method stub

	}

	@Override
	public void onClosed() {
		// TODO Auto-generated method stub
		mSlidingLayer.removeAllViews();
	}

}

6、MainActivity

package com.org.activity;

import com.org.fragment.LeftFragment;
import com.org.fragment.RightFragment;
import com.org.slidingmenu.BaseSlidingFragmentActivity;
import com.org.slidingmenu.SlidingMenu;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends BaseSlidingFragmentActivity implements OnClickListener{
	protected SlidingMenu mSlidingMenu;
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);

		initSlidingMenu();
		setContentView(R.layout.activity_main);
		initView(savedInstanceState);
	}

	private void initSlidingMenu() {
		//这个是设置进去,通过按键实现加载的默认布局,然后用碎片替换掉 ,只有这样才有LeftFragment控制
		setBehindContentView(R.layout.main_left_layout);// 设置左菜单

		//这个都是碎片处理规则,替换掉main_left_fragment布局,通过左滑实现此布局
		//若是没有这个,加载布局只是默认的main_left_fragment
		FragmentTransaction mFragementTransaction = getSupportFragmentManager()
				.beginTransaction();
		Fragment mFrag = new LeftFragment();
		mFragementTransaction.replace(R.id.main_left_fragment, mFrag);
		mFragementTransaction.commit();

		// customize the SlidingMenu
		DisplayMetrics dm = new DisplayMetrics();
		getWindowManager().getDefaultDisplay().getMetrics(dm);
		int mScreenWidth = dm.widthPixels;// 获取屏幕分辨率宽度

		mSlidingMenu = getSlidingMenu();
		mSlidingMenu.setMode(SlidingMenu.LEFT_RIGHT);// 设置是左滑还是右滑,还是左右都可以滑,我这里左右都可以滑
		mSlidingMenu.setShadowWidth(mScreenWidth / 40);// 设置阴影宽度
		mSlidingMenu.setBehindOffset(mScreenWidth / 8);// 设置菜单宽度
		mSlidingMenu.setFadeDegree(0.35f);// 设置淡入淡出的比例
		mSlidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
		mSlidingMenu.setShadowDrawable(R.drawable.slidingmenu_shadow);// 设置左菜单阴影图片
		mSlidingMenu.setSecondaryShadowDrawable(R.drawable.right_shadow);// 设置右菜单阴影图片
		mSlidingMenu.setFadeEnabled(true);// 设置滑动时菜单的是否淡入淡出
		mSlidingMenu.setBehindScrollScale(0.333f);// 设置滑动时拖拽效果
	}

	private void initView(Bundle savedInstanceState) {
		//这个是设置进去,通过按键实现加载的默认布局,然后用碎片替换掉
		mSlidingMenu.setSecondaryMenu(R.layout.main_right_layout);

		//这个都是碎片处理规则,替换掉main_right_fragment布局,通过右滑实现此布局
		//若是没有这个,加载布局只是默认的main_right_fragment
		FragmentTransaction mFragementTransaction = getSupportFragmentManager()
				.beginTransaction();
		Fragment mFrag = new RightFragment();
		mFragementTransaction.replace(R.id.main_right_fragment, mFrag);
		mFragementTransaction.commit();

		((Button) findViewById(R.id.buttonLeft)).setOnClickListener(this);
		((Button) findViewById(R.id.buttonRight)).setOnClickListener(this);
	}

	@Override
	public void onClick(View v) {

		switch (v.getId()) {
		case R.id.buttonLeft:
			mSlidingMenu.showMenu(true);
			break;
		case R.id.buttonRight:
			mSlidingMenu.showSecondaryMenu(true);
			break;
		default:
			break;
		}
	}

	/**
	 * 连续按两次返回键就退出
	 */
	private long firstTime;

	@Override
	public void onBackPressed() {
		// TODO Auto-generated method stub
		if (System.currentTimeMillis() - firstTime < 3000) {
			finish();
		} else {
			firstTime = System.currentTimeMillis();
			showShort(this, "再按一次退出!");
		}
	}

	static Toast toast;
	public static void showShort(Context context, String message) {
		if (null == toast) {
			toast = Toast.makeText(context, message, Toast.LENGTH_SHORT);
			// toast.setGravity(Gravity.CENTER, 0, 0);
		} else {
			toast.setText(message);
		}
		toast.show();
	}
}

源码下载:点击

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-14 11:26:28

Android 左右侧滑示例的相关文章

Android OpenGL入门示例:绘制三角形和正方形 (附完整源码)

Android上对OpenGl的支持是无缝的,所以才有众多3D效果如此逼真的游戏,在Camera的一些流程中也有用到GLSurfaceView的情况.本文记录OpenGL在Android上的入门级示例,绘制一个三角形和正方形.尽管功能简单,可是我捣腾了好几个晚上,大量网上文章上的代码都有点问题,不是绘制不出来就是挂了. 第一个文件:MainActivity.java package com.example.learnopengl1; import android.opengl.GLSurface

Android AIDL 使用示例

介绍: AIDL 即  Android Interface Definition Language 使用: 1.新建.aidl文件 1 //AIDL 文件所在的包 2 package com.houny.demo_aidl.aidl; 3 4 //接口名必须和AIDL文件名一致 5 interface ISay{ 6 boolean Say(); 7 boolean SayInt(int i); 8 boolean SayString(String str); 9 } 2.新建Service,并

Android UI-SlidingMenu侧滑菜单效果

Android UI-SlidingMenu侧滑菜单效果 本篇博客给大家分享一个效果比较好的侧滑菜单的Demo,实现点击左边菜单切换Fragment. 效果如下: 主Activity代码: package com.infzm.slidingmenu.demo; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.View; import android.view.View.On

Android vcard使用示例,生成vcf文件

 Android vcard使用示例,生成vcf文件 我们备份手机联系人时,导出到SD卡时,会在SD卡中生成一个vcf文件,用于保存联系人姓名,手机号码. vCard 规范容许公开交换个人数据交换 (Personal Data Interchange PDI)信息,在传统纸质商业名片可找到这些信息.规范定义电子名片(或叫vCard)的格式. 而在Android上使用vcard就要借助第三方包: 将它复制进工程,然后Add jar即可,实现代码很简单,如下: if (Environment.get

SkylineGlobe Android 开发 面积计算示例代码

SkylineGlobe Android 开发 面积计算示例代码: 如果之前熟悉SkylineGlobe桌面端的二次开发,看这些代码应该不难理解. package com.skyline.terraexplorer.tools; import android.os.Handler; import android.os.Looper; import com.skyline.teapi.*; import com.skyline.teapi.ISGWorld.OnAnalysisProgressLi

android 读写文件示例

(1)程序说明 代码中的两个按钮处理事件,分别进行了文本的读写操作. 1)文件写操作 首先调用Activity的openFileOutPut()方法获得文本文件的输出流,第一个参数为文本文件的名字,第二个为文件的打开方式 接着调用Outputstream对象的write()方法将Textview中获得文本信息写入outputstream对象,最后调用close()方法完成写入操作. 2)文件读操作 首先调用Activity的openFileInPut()方法获得文本文件的输入流, 接着调用输入流

android 代码混淆示例

参考其它资料为项目代码做了一下混淆 项目中使用了 slidingmenu   actionbarsherlock   fastjson  volley   httpclient 等第三方库, 并使用了  webview + js ,  有微信和微博分享功能. # 指定代码的压缩级别 -optimizationpasses 5 -dontusemixedcaseclassnames # 是否混淆第三方jar -dontskipnonpubliclibraryclasses -dontpreveri

官方Android Camera2 录像示例--停止录像时崩溃修正

官方Android 使用Camera2示例项目地址:https://github.com/android/camera-samples 视频录像示例:https://github.com/android/camera-samples/tree/master/Camera2VideoJava  官方Camera2VideoFragment.java停止录像代码,原来代码:会导致APP崩溃 private void stopRecordingVideo() { // UI mIsRecordingV

Android android.support.v4.widget.SlidingPaneLayout 侧滑示例

SlidingPaneLayout 用于水平滚动两个view, 第一个view是左侧边,第二个view是content view slding_pane_layout.xml <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.SlidingPaneLayout xmlns:android="http://schemas.android.com/apk/res