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实现左侧导航

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

您可能感兴趣的文章:

  • Android 中ActionBar+fragment实现页面导航的实例
  • 微信小程序实战之仿android fragment可滑动底部导航栏(4)
  • android中Fragment+RadioButton实现底部导航栏
  • Android自定义ViewPagerIndicator实现炫酷导航栏指示器(ViewPager+Fragment)
  • Android Activity与Fragment实现底部导航器
  • Android 开发之BottomBar+ViewPager+Fragment实现炫酷的底部导航效果
  • Android程序开发之Fragment实现底部导航栏实例代码
(0)

相关推荐

  • android中Fragment+RadioButton实现底部导航栏

    在App中经常看到这样的tab底部导航栏 那么这种效果是如何实现,实现的方式有很多种,最常见的就是使用Fragment+RadioButton去实现.下面我们来写一个例子 首先我们先在activity_mian.xml定义布局,整个布局的外面是线性布局,上面是帧布局切换不同的Fragment,底下是RadioGroup嵌套的是RadioButton.代码如下所示: <?xml version="1.0" encoding="utf-8"?> <Li

  • Android 中ActionBar+fragment实现页面导航的实例

    Android 中ActionBar+fragment实现页面导航的实例 为保证android2.0以上均能运行,使用support.v7库下的actionbar及fragment 继承自AppCompatActivity(ActionBarActivity已过时)使用getSupportActionBar()得到ActionBar, ActionBar.Tab,这里Tab必须设置监听,在监听中实现Fragment的切换. 这里重点提一下,Theme主题一定要适配,因为我使用的是AppCompa

  • Android 开发之BottomBar+ViewPager+Fragment实现炫酷的底部导航效果

    BottomBar BottomBar是Github上的一个开源框架,因为从1.3.3开始不支持fragments了,要自己配置,弄了很久,不管是app的fragment还是V4 的程序总是总是闪退.于是就用这种方式实现了,效果还不错.github有详细说明,多余的就不说了. 这个roughike是这个项目的所有者(大神致敬). 我用的是Android studio开发,fragment全部导的V4的包(以为最开始就支持的是v4的,后面也支持了app.fragment). 首先是dependen

  • Android自定义ViewPagerIndicator实现炫酷导航栏指示器(ViewPager+Fragment)

    ViewPagerIndicator导航栏指示器运行效果: 实现这个效果,我是看了很多大神写的博客和视频后自己敲的,欢迎指正 github地址:https://github.com/dl10210950/TabViewPagerIndicator 自定义一个ViewPagerIndicator 自定义一个Indicator继承LinearLayout,在构造方法里面设置画笔的一些属性 public ViewPagerIndicator(Context context, AttributeSet

  • Android程序开发之Fragment实现底部导航栏实例代码

    流行的应用的导航一般分为两种,一种是底部导航,一种是侧边栏. 说明 IDE:AS,Android studio; 模拟器:genymotion; 实现的效果,见下图. 具体实现 为了讲明白这个实现过程,我们贴出来的代码多一写,这样更方便理解 [最后还会放出完整的代码实现] .看上图的界面做的比较粗糙,但实现过程的骨架都具有了,想要更完美的设计,之后自行完善吧 ^0^. 布局 通过观察上述效果图,发现任意一个选项页面都有三部分组成: 顶部去除ActionBar后的标题栏: 中间一个Fragment

  • Android Activity与Fragment实现底部导航器

    单Activity多Fragment实现底部导航器 最近由于Android基础知识讲解需要,采用单Activity多Fragment实现类似QQ底部导航器示例,这种开发模式广泛应用于App开发,比如QQ,微信,新浪等,关于Android底部导航栏的实现方式特别多,实现也是五花八门,同时Google在自己推出的Material design中也增加了Bottom Navigation导航控制,实现起来更加简单,且支持动态效果更加酷炫,但是因为是基础的知识,所以打算通过自定义来实现,不使用Botto

  • 微信小程序实战之仿android fragment可滑动底部导航栏(4)

    底部3-5个选项的底部导航栏,目前在移动端上是主流布局之一,因此腾讯官方特地做了,可以通过设置,就可以做出了一个底部的导航栏. 相关教程:微信小程序教程系列之设置标题栏和导航栏(7) 但是通过设置的这个底部的导航栏,功能上比较固定,它必须要设置与它对应的一个页面,而且并不能滑动. 在业务上,有时候会比较限制,并不能完全满足所需. 又例如早前有人拿着UI稿问我,这种广告轮播图的样式,在小程序能不能实现呢? 我当时没有想了下,还不是很确定,因为小程序的轮播图的那几个小点点实在比较普通,样式单一. 因

  • Android使用fragment实现左侧导航

    使用简单的fragment实现左侧导航,供大家参考,具体内容如下 先上效果图: MainActivity.java public class MainActivity extends FragmentActivity { // private Handler handler; private ViewPager fragmentViewPager; private ListView leftListView; private List<Fragment> fragmentlist; priva

  • Android 中使用RadioGroup和Fragment实现底部导航栏的功能

    在一些购物商城中经常会遇到这类效果,效果图如下: 先看效果图 步骤一: 完成对主界面main.xml的创建: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/

  • Android中fragment与activity之间的交互(两种实现方式)

    (未给Fragment的布局设置BackGound) 之前关于Android中Fragment的概念以及创建方式,我专门写了一篇博文<详解Android中Fragment的两种创建方式>,就如何创建Fragment混合布局做了详细的分析,今天就来详细说道说道Fragment与宿主Activity之间是如何实现数据交互的. 我们可以这样理解,宿主Activity中的Fragment之间要实现信息交互,就必须通过宿主Activity,Fragment之间是不可能直接实现信息交互的. Fragmen

  • Android 中 Fragment的使用大全

    Fragment必须总是被嵌入到一个Activity中,并且它的生命周期直接受宿主Activity生命周期的影响. 本文内容可以分为下面的几部分: 使用支持库 创建一个Fragment 创建一个动态UI 多个Fragment之间的通信 在一个Activity中,一个Fragment代表一种行为或者用户界面的一部分.你可以联合起来多个Fragment在一个Activity中创建多面板的UI,并且可以重用一个Fragment在多个activity中.你可以认为一个Fragment是一个Activit

  • Android中使用PagerSlidingTabStrip实现导航标题的示例

    此开源框架官网地址:https://github.com/astuetz/PagerSlidingTabStrip 可以理解为配合ViewPager使用的交互式页面指示器控件. 话不多说,先上效果图: 为了演示其中的pstsIndicatorHeight与pstsUnderlineHeight 的区别,进行了不同的设置已区分效果(做了去除actionbar处理).大家可以很直观的看出相比之前单独使用ViewPager以及ViewPager与Fragement嵌套,本次演示PagerSliding

  • Android 使用Fragment模仿微信界面的实例代码

    什么是Fragment 自从Android 3.0中引入fragments 的概念,根据词海的翻译可以译为:碎片.片段.其目的是为了解决不同屏幕分辩率的动态和灵活UI设计.大屏幕如平板小屏幕如手机,平板电脑的设计使得其有更多的空间来放更多的UI组件,而多出来的空间存放UI使其会产生更多的交互,从而诞生了fragments . fragments 的设计不需要你来亲自管理view hierarchy 的复杂变化,通过将Activity 的布局分散到frament 中,可以在运行时修改activit

  • Android仿微信页面底部导航效果代码实现

    大家在参考本地代码的时候要根据需要适当的修改,里面有冗余代码小编没有删除.好了,废话不多说了,一切让代码说话吧! 关键代码如下所示: .java里面的主要代码 public class MainActivity extends BaseActivity implements TabChangeListener { private Fragment[] fragments; private FragZaiXianYuYue fragZaiXianYuYue; private FragDaoLuJi

  • 详解Android中fragment和viewpager的那点事儿

    在之前的博文<Android 中使用 ViewPager实现屏幕页面切换和页面轮播效果>和<详解Android中Fragment的两种创建方式>以及<Android中fragment与activity之间的交互(两种实现方式)>中我们介绍了ViewPager以及Fragment各自的使用场景以及不同的实现方式. 那如果将他们两结合起来,会不会擦出点火花呢,答案是肯定的.之前在介绍ViewPager时,我们实现了多个ImageView的切换,并配合更新导航原点的状态.那我

随机推荐