当前位置: 首页 > 编程笔记 >

Android使用fragment实现左侧导航

子车芷阳
2023-03-14
本文向大家介绍Android使用fragment实现左侧导航,包括了Android使用fragment实现左侧导航的使用技巧和注意事项,需要的朋友参考一下

使用简单的fragment实现左侧导航,供大家参考,具体内容如下

先上效果图:

MainActivity.java

public class MainActivity extends FragmentActivity { 
 // private Handler handler; 
 private ViewPager fragmentViewPager; 
 private ListView leftListView; 
 private List<Fragment> fragmentlist; 
 private Fragment1 fragment1; 
 private Fragment2 fragment2; 
 private ArrayList<String> leftlist = new ArrayList<String>();// left list 
  
  
 private ListAdapter listAdapter = null; 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
  // TODO Auto-generated method stub 
  super.onCreate(savedInstanceState); 
  setContentView(R.layout.activity_main); 
  fragmentViewPager = (ViewPager) findViewById(R.id.fragmentViewPager); 
  leftListView = (ListView) findViewById(R.id.leftListView); 
 
  initDatas();// left初始化。 
  initDatasViewPager(); 
  // aTextViewCallBack back = (aTextViewCallBack) 
  // findViewById(R.id.aTextViewCallBack); 
  // back.setCalBack(new calBack() { 
  // @Override 
  // public void onclick() { 
  // // TODO Auto-generated method stub 
  // Toast.makeText(MainActivity.this, "这是回调的点击事件哦~", 
  // Toast.LENGTH_LONG).show(); 
  // } 
  // }); 
  // 
  // new Thread(new Runnable() { 
  // 
  // @Override 
  // public void run() { 
  // // TODO Auto-generated method stub 
  // String str = "http://www.easyicon.net/"; 
  // String st = getHtmlByURL.getHtmlByURL(str); 
  // Message msg = handler.obtainMessage(0,st); 
  // handler.sendMessage(msg); 
  // } 
  // }).start(); 
  // handler = new Handler() { 
  // public void handleMessage(Message msg) { 
  // super.handleMessage(msg); 
  // String x = msg.obj.toString(); 
  // Log.i("GEtHtml", x); 
  // }; 
  // }; 
 } 
 
 public void initDatas() { 
  for (int i = 0; i < 5; i++) { 
   leftlist.add("第" + i + "个"); 
   Log.i("65", leftlist.get(i).toString()); 
  } 
 
  ArrayList<ButtonView> buttonListView = new ArrayList<ButtonView>(); 
  ButtonView a = new ButtonView(R.string.pay_name_weixin); 
  buttonListView.add(a); 
  ButtonView b = new ButtonView(R.string.pay_name_alipay); 
  buttonListView.add(b); 
   
  listAdapter = new ListAdapter(buttonListView); 
  leftListView.setAdapter(listAdapter); 
  leftListView.setDividerHeight(0); 
  // listview点击事件 
  leftListView.setOnItemClickListener(new OnItemClickListener() { 
   @Override 
   public void onItemClick(AdapterView<?> parent, View view, 
     int position, long id) { 
    Log.e("tag", Integer.toString(position)); 
    // TODO Auto-generated method stub 
    listAdapter.setSelectedPosition(position); 
    listAdapter.notifyDataSetInvalidated(); 
    if (position % 2 == 1) { 
     fragmentViewPager.setCurrentItem(1); 
    }else{ 
     fragmentViewPager.setCurrentItem(0); 
    } 
   } 
  }); 
 } 
 
 public void initDatasViewPager() { 
  fragmentlist = new ArrayList<Fragment>(); 
  fragment1 = new Fragment1();// 
  fragment2 = new Fragment2();// 
  fragmentlist.add(fragment1); 
  fragmentlist.add(fragment2); 
  fragmentViewPager.setAdapter(new FragmentAdapter( 
    getSupportFragmentManager(), fragmentlist, this)); 
  fragmentViewPager.setOnPageChangeListener(new MyOnPageChangeListener()); 
 } 
 
 // set OnPageChangeListener in inner class 
 class MyOnPageChangeListener implements OnPageChangeListener { 
 
  @Override 
  public void onPageScrollStateChanged(int arg0) { 
   // TODO Auto-generated method stub 
 
  } 
 
  @Override 
  public void onPageScrolled(int arg0, float arg1, int arg2) { 
   // TODO Auto-generated method stub 
 
  } 
  /** 
   * 当点击不同id的ViewPage的时候才触发 
   * */ 
  @Override 
  public void onPageSelected(int arg0) { 
   Log.e("tag1", Integer.toString(arg0)); 
   switch (arg0) { 
   case 0: 
 
    break; 
   case 1: 
 
    break; 
   case 2: 
 
    break; 
   } 
  } 
 
 } 
 
 public class ListAdapter extends BaseAdapter { 
 
  ArrayList<ButtonView> arrayList = null; 
  LayoutInflater inflater; 
  View view; 
  ButtonLayoutHolder buttonLayoutHolder; 
  LinearLayout buttonLayout = null; 
  TextView buttonText = null; 
 
  private int selectedPosition = -1;// 选中的位置 
 
  public ListAdapter(ArrayList<ButtonView> buttonListView) { 
   // TODO Auto-generated constructor stub 
   arrayList = buttonListView; 
  } 
 
  @Override 
  public int getCount() { 
   // TODO Auto-generated method stub 
   return arrayList.size(); 
  } 
 
  @Override 
  public Object getItem(int position) { 
   // TODO Auto-generated method stub 
   return arrayList.get(position); 
  } 
 
  @Override 
  public long getItemId(int position) { 
   // TODO Auto-generated method stub 
   return position; 
  } 
 
  public void setSelectedPosition(int position) { 
   selectedPosition = position; 
  } 
 
  @Override 
  public View getView(int position, View convertView, ViewGroup parent) { 
   // TODO Auto-generated method stub 
   inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
   view = inflater.inflate(R.layout.button_layout, null, false); 
   buttonLayoutHolder = (ButtonLayoutHolder) view.getTag(); 
 
   if (buttonLayoutHolder == null) { 
    buttonLayoutHolder = new ButtonLayoutHolder(); 
    buttonLayoutHolder.buttonLayout = (LinearLayout) view 
      .findViewById(R.id.LinearLayoutButton); 
    buttonLayoutHolder.textView = (TextView) view 
      .findViewById(R.id.TextViewButton); 
    view.setTag(buttonLayoutHolder); 
   } 
   buttonLayout = buttonLayoutHolder.buttonLayout; 
   buttonText = buttonLayoutHolder.textView; 
   if (selectedPosition == position) { 
    buttonText.setSelected(true); 
    buttonText.setPressed(true); 
    buttonLayout.setBackgroundColor(Color.parseColor("#e4e8e9")); 
    buttonText.setTextColor(Color.BLUE); 
     
   } else { 
    buttonText.setSelected(false); 
    buttonText.setPressed(false); 
    buttonLayout.setBackgroundColor(Color.parseColor("#2f4471")); 
    buttonText.setTextColor(Color.WHITE); 
 
   } 
   buttonText.setHeight(40); 
   buttonText.setText(arrayList.get(position).textViewId); 
   return view; 
 
  } 
 
 }; 
} 
class ButtonView { 
 int textViewId; 
 
 ButtonView(int tId) { 
  textViewId = tId; 
 } 
} 
 
class ButtonLayoutHolder { 
 LinearLayout buttonLayout; 
 TextView textView; 
} 
FragmentAdapter.java
[java] view plain copy
public class FragmentAdapter extends FragmentPagerAdapter{ 
 private List<Fragment> listmVp; 
 private Context context; 
  
 public FragmentAdapter(FragmentManager fm, List<Fragment> listmVp,Context context) { 
  super(fm); 
  this.listmVp = listmVp; 
  this.context = context; 
 } 
 @Override 
 public int getCount() { 
  // TODO Auto-generated method stub 
  return listmVp.size(); 
 } 
 
 @Override 
 public Fragment getItem(int arg0) { 
  // TODO Auto-generated method stub 
  return listmVp.get(arg0); 
 } 
} 

Fragment1.java

public class Fragment1 extends Fragment{ 
 @Override 
 public View onCreateView(LayoutInflater inflater, ViewGroup container, 
   Bundle savedInstanceState) { 
  // TODO Auto-generated method stub 
  return inflater.inflate(R.layout.fragment1, container, false); 
 } 
} 

Fragment2.java

public class Fragment2 extends Fragment{ 
 @Override 
 public View onCreateView(LayoutInflater inflater, ViewGroup container, 
   Bundle savedInstanceState) { 
  // TODO Auto-generated method stub 
  return inflater.inflate(R.layout.fragment2, container, false); 
 } 
} 

源码地址:使用fragment实现左侧导航

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍使用Fragment+ViewPager实现底部导航栏,包括了使用Fragment+ViewPager实现底部导航栏的使用技巧和注意事项,需要的朋友参考一下 前几天准备写一个小程序,一直认为fragment实现底部导航栏,是很容易的事情,可是却遇到了前所未有的问题,先给大家贴出来我出错的界面布局代码: 这个布局实现的效果如下: 只看效果,大家觉得挺好的,但是重要的问题来了。 下面的r

  • 本文向大家介绍jQuery插件PageSlide实现左右侧栏导航菜单,包括了jQuery插件PageSlide实现左右侧栏导航菜单的使用技巧和注意事项,需要的朋友参考一下 jQuery左右侧栏导航菜单插件PageSlide,目前比较流行的导航菜单展现形式,特别是在手机端或者触屏页面,效果还是不错的,支持自定义展现的方向,菜单内容可自行定义,支持加载页面,或者模态的窗格中显示此页的隐藏的内容,推荐使

  • 本文向大家介绍Android使用TabLayout+Fragment实现顶部选项卡,包括了Android使用TabLayout+Fragment实现顶部选项卡的使用技巧和注意事项,需要的朋友参考一下 先看效果图: 使用Tablayout,首先需要在项目中加入Design包 在activity_main.xml布局文件中 里面一个Tablayout和一个ViewPager就行了 实现上面的效果需要创

  • 本文向大家介绍Android使用animator实现fragment的3D翻转效果,包括了Android使用animator实现fragment的3D翻转效果的使用技巧和注意事项,需要的朋友参考一下 今天老师留的作业,使用俩个Fragment来实现3D翻转效果,遇到了一点点的问题,于是在网上进行了查找,但是发现有些博主的代码不正确,对其他人进行了误导,在网上使用属性动画实现3D效果非常少,所以经过

  • 本文向大家介绍js实现左右两侧浮动广告,包括了js实现左右两侧浮动广告的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了js实现左右浮动广告展示的具体代码,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍Android使用ViewPager实现左右无限滑动,包括了Android使用ViewPager实现左右无限滑动的使用技巧和注意事项,需要的朋友参考一下 前言         网上有很多使用ViewPager实现左右滑动这一效果的资料,这些资料大多数都是将PagerAdapter中getCount()方法的返回值设为Integer.MAX_VALUE使用户看不到边界,然后在insta