求解:Android slidemenu 左滑菜單框架怎么監聽菜單項的點擊事件?
0
如題,測試了兩天了沒有具體結果
/**
* 菜單控件的
package com.qm.test;
import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
/**
* 菜單控件的生成類
*
* @author Administrator
*
*/
public class SampleListFragment extends ListFragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.list, null);
}
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
SampleAdapter adapter = new SampleAdapter(getActivity());
// 添加一個菜單項
adapter.add(new SampleItem("MainActivity", android.R.drawable.ic_menu_search, MainActivity.class));
adapter.add(new SampleItem("NextActivity", android.R.drawable.ic_menu_search, NextActivity.class));
setListAdapter(adapter);
}
public class SampleItem {
public String tag;
public int iconRes;
public Class cls;
public SampleItem(String tag, int iconRes, Class<? extends SlidingFragmentActivity> cls) {
this.tag = tag;
this.iconRes = iconRes;
this.cls = cls;
}
}
public class SampleAdapter extends ArrayAdapter<SampleItem> {
Context context;
public SampleAdapter(Context context) {
super(context, 0);
this.context = context;
}
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(R.layout.row, null);
}
ImageView icon = (ImageView) convertView.findViewById(R.id.row_icon);
icon.setImageResource(getItem(position).iconRes);
TextView title = (TextView) convertView.findViewById(R.id.row_title);
title.setText(getItem(position).tag);
if (((Activity) context).getClass() == getItem(position).cls) {
convertView.setBackgroundColor(Color.parseColor("#E8F2FE"));
}
convertView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
v.setBackgroundColor(Color.parseColor("#50BCEE"));
break;
case MotionEvent.ACTION_UP:
v.setBackgroundColor(Color.parseColor("#E8F2FE"));
break;
}
return false;
}
});
// convertView.setOnClickListener(new OnClickListener() {
//
// @Override
// public void onClick(View v) {
// // TODO Auto-generated method stub
// Intent intent = new Intent();
// intent.setClass(context, getItem(position).cls);
// startActivity(intent);
// ((Activity) context).overridePendingTransition(R.anim.in_from_right, R.anim.out_from_left);
// }
//
// });
return convertView;
}
}
}
在這里添加了菜單項 我要在activity中監聽菜單項的點擊事件該怎么做?
activity代碼:
package com.qm.test;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu.CanvasTransformer;
import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;
import android.graphics.Canvas;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.view.KeyEvent;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Interpolator;
import android.widget.TextView;
import android.widget.Toast;
/*
* 主頁面包裝菜單、返回動畫、退出事件的包裝類
*/
public class ListActivityMode extends SlidingFragmentActivity {
private CanvasTransformer mTransformer;
private SlidingMenu sm;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initSlidingMenu(this);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
/*
* 當主頁面不可見時關閉菜單
* @see android.support.v4.app.FragmentActivity#onStop()
*/
@Override
protected void onStop() {
// TODO Auto-generated method stub
if(sm.isMenuShowing()){
sm.toggle();
}
super.onStop();
}
private long exitTime = 0;
/*
* 雙擊返回按鈕退出
* @see android.support.v4.app.FragmentActivity#onKeyDown(int, android.view.KeyEvent)
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (KeyEvent.KEYCODE_BACK == keyCode) {
// 判斷是否在兩秒之內連續點擊返回鍵,是則退出,否則不退出
if (System.currentTimeMillis() - exitTime > 2000) {
Toast.makeText(getApplicationContext(), "再按一次退出程序",
Toast.LENGTH_SHORT).show();
// 將系統當前的時間賦值給exitTime
exitTime = System.currentTimeMillis();
} else {
finish();
System.exit(0);
}
return true;
}
return super.onKeyDown(keyCode, event);
}
/*
* 菜單初始化程序
* @see android.app.Activity#onOptionsItemSelected(android.view.MenuItem)
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
toggle();
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* 初始化滑動菜單
*/
public void initSlidingMenu(SlidingFragmentActivity activity) {
//初始化動畫效果
initAnimation(activity);
// 設置主界面視圖
// activity.setContentView(R.layout.activity_main);
// 設置滑動菜單視圖
activity.setBehindContentView(R.layout.menu_frame);
activity.getSupportFragmentManager().beginTransaction().replace(R.id.menu_frame, new SampleListFragment()).commit();
// 設置滑動菜單的屬性值
sm = activity.getSlidingMenu();
sm.setShadowWidthRes(R.dimen.shadow_width);
sm.setShadowDrawable(R.drawable.shadow);
sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);
sm.setFadeDegree(0.35f);
sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
sm.setBehindScrollScale(0.0f);
sm.setBehindCanvasTransformer(mTransformer);
activity.setSlidingActionBarEnabled(true);
}
private Interpolator interp = new Interpolator() {
@Override
public float getInterpolation(float t) {
t -= 1.0f;
return t * t * t + 1.0f;
}
};
/**
* 初始化動畫效果
*/
private void initAnimation(SlidingFragmentActivity activity) {
mTransformer = new CanvasTransformer() {
@Override
public void transformCanvas(Canvas canvas, float percentOpen) {
canvas.translate(0, canvas.getHeight() * (1 - interp.getInterpolation(percentOpen)));
}
};
}
}