SlidingMenu側滑菜單

slidingmenu 與fragment 結合

mainactivity繼承SlidingFragmentActivity

import com.example.fragment.MyFragment;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.widget.Toast;

public class MainActivity extends SlidingFragmentActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 得到SlidingMenu的實例
        SlidingMenu slidingMenu = getSlidingMenu();
        // 設置菜單視圖
        setBehindContentView(R.layout.slidingmenu_framelayout);
        // 給菜單視圖添加內容__fragment
        FragmentManager manager = getSupportFragmentManager();
        FragmentTransaction transaction = manager.beginTransaction();
        //通過Tag,來訪問fragment
        transaction.add(R.id.framelayout_slidingmenu, new MyFragment(), "left")
                .commit();
        // 設置滑出方向的模式
        slidingMenu.setMode(SlidingMenu.LEFT);
        // 設置觸摸位置
        slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
        // 設置滑出寬度
        slidingMenu.setBehindOffset(200);
        // 設置滑出到樣式------------此項不能寫,寫了報錯--menu可能已經附加到activity了
        //slidingMenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
        //設置陰影圖片
        slidingMenu.setShadowDrawable(R.drawable.shadow_shape);
        //設置陰影寬度
        slidingMenu.setShadowWidthRes(R.dimen.ShadowWidth);
    }

    public void youmeng() {
        Toast.makeText(this, "  youmeng ", 1).show();
    }
}

fragment

import android.os.Bundle;
import android.support.annotation.Nullable;
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;
import android.widget.Toast;
import com.example.day02_slidingmenu_fragment.MainActivity;
import com.example.day02_slidingmenu_fragment.R;

public class MyFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater,
            @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_view,container, false);
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        //getView()得到fragment的view即(onCreateView)
        TextView tv_dongtai = (TextView) getView()
                .findViewById(R.id.tv_dongtai);
        tv_dongtai.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Toast.makeText(getActivity(), "點擊了動態",Toast.LENGTH_SHORT).show();
                //訪問activity,通過getActivity()然後強轉,最後訪問其方法
                MainActivity ma=(MainActivity) getActivity();
                ma.youmeng();
            }
        });
        super.onActivityCreated(savedInstanceState);
    }
}

SlidingMenu 與view

mainactivity繼承Activity

 package com.example.day01_slidingmenu_demo;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;
import android.widget.Toast;

import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        SlidingMenu menu = new SlidingMenu(this);
        menu.setMode(SlidingMenu.LEFT_RIGHT);// 模式
        menu.setFadeDegree(0.5f);// 設置漸入漸出效果的變化程度1.0爲關閉時純黑
        menu.setShadowDrawable(R.drawable.shadow_shape);// 設置陰影(slidingmenu與內容的接縫處)圖片
        menu.setShadowWidthRes(R.dimen.slidingmenu_shadow_width);// 設置陰影的寬度
        // SlidingMenu.SLIDING_WINDOW:菜單拉開後高度是全屏的
        // SlidingMenu.SLIDING_CONTENT:菜單拉開後高度是不包含Title/ActionBar的內容區域
        menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);// 把SlidingMenu附加在Activity上的模式
        menu.setBehindOffset(100);// 剩餘內容的寬度
        // menu.setBehindWidth(100);//菜單滑出後的寬度
        menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);// 觸摸模式:整個屏幕
        // menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);//手指緊貼邊緣滑出
        // menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE);...............
        View v = View.inflate(this, R.layout.slidingmenu_view, null);
        menu.setMenu(v);// 設置菜單view
        menu.setSecondaryMenu(R.layout.slidingmenu_second);
        TextView tv_onclick = (TextView) v.findViewById(R.id.onclick);
        tv_onclick.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "點擊了子項tv", Toast.LENGTH_SHORT)
                        .show();
            }
        });

    }

}

fragment適配器還可以這麼寫

//在mainactivity中寫了,適配器中可以直接用
 private static final String[] TITLE = new String[] { "頭條", "房產", "另一面", "女人", "財經", "數碼", "情感", "科技" };  
class TabPageIndicatorAdapter extends FragmentPagerAdapter {  
        public TabPageIndicatorAdapter(FragmentManager fm) {  
            super(fm);  
        }  

        @Override  
        public Fragment getItem(int position) {  
            //新建一個Fragment來展示ViewPager item的內容,並傳遞參數  
            Fragment fragment = new ItemFragment();    
            Bundle args = new Bundle();    
            args.putString("arg", TITLE[position]);    
            fragment.setArguments(args);    

            return fragment;  
        }  

        @Override  
        public CharSequence getPageTitle(int position) {  
            return TITLE[position % TITLE.length];  
        }  

        @Override  
        public int getCount() {  
            return TITLE.length;  
        }  
    }  
發佈了41 篇原創文章 · 獲贊 1 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章