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