• 求解:Android slidemenu 左滑菜單框架怎么監聽菜單項的點擊事件?

    0
    Android Java C/C++ list ico 15724 次瀏覽

    如題,測試了兩天了沒有具體結果

    /**

     * 菜單控件的

    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)));
    			}
    		};
    	}
    	
    	
    	
    }
    


    相似問題

    相關經驗

    相關資訊

    相關文檔

  • sesese色