Android使用Scroll+Fragment仿京东分类效果

 更新时间:2018年02月11日 10:11:06   作者:火炎焱燚-  
这篇文章主要为大家详细介绍了Android使用Scroll+Fragment仿京东分类效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

 本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下

实现思路:首先说下布局,整个是一个横向的线性布局,左边是一个ScrollView,右边是一个FrameLayout,在代码中动态向ScrollView中添加TextView,然后根据TextView的点击事件使用Fragment替换FrameLayout

首先看下布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  xmlns:tools="http://schemas.android.com/tools" 
  android:layout_width="match_parent" 
  android:layout_height="match_parent" 
  android:orientation="horizontal" 
  tools:context="www.jdsort.com.jdsort.MainActivity"> 
 
  <ScrollView 
    android:id="@+id/scrollview" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="1" 
    android:scrollbars="none"> 
    <LinearLayout 
      android:id="@+id/linearlayout" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:gravity="center_horizontal" 
      android:orientation="vertical" /> 
  </ScrollView> 
 
  <FrameLayout 
    android:id="@+id/framelayout" 
    android:layout_width="0dp" 
    android:layout_height="match_parent" 
    android:layout_weight="3"/> 
</LinearLayout> 

MainActivity代码:

public class MainActivity extends FragmentActivity implements View.OnClickListener { 
 
  private String[] titles={"常用分类","潮流女装","品牌男装","内衣配饰","家用电器","手机数码","电脑办公","个护化妆","母婴频道","食物生鲜","酒水饮料","家居家纺","整车车品","鞋靴箱包","运动户外","图书","玩具乐器","钟表","居家生活","珠宝饰品","音像制品","家具建材","计生情趣","营养保健","奢侈礼品","生活服务","旅游出行"}; 
  private ScrollView mScrollView; 
  private FrameLayout mFrameLayout; 
  //装装ScrollView的item的TextView的数组 
  private TextView[] textViewArray; 
  //装ScrollView的item的数组 
  private View[] views; 
  Context context; 
  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    context=this; 
 
    textViewArray=new TextView[titles.length]; 
    views=new View[titles.length]; 
 
    initView(); 
 
    getSupportFragmentManager().beginTransaction().replace(R.id.framelayout,new FragmentOne()).commit(); 
  } 
 
  private void initView() { 
    mScrollView= (ScrollView) findViewById(R.id.scrollview); 
    addView(); 
    changeTextColor(0); 
 
    mFrameLayout= (FrameLayout) findViewById(R.id.framelayout); 
 
  } 
 
  /** 
   * 给ScrollView添加子View 
   */ 
  private void addView() { 
    LinearLayout mLinearLayout= (LinearLayout) findViewById(R.id.linearlayout); 
 
    View view; 
    for(int x=0;x<titles.length;x++){ 
      view = View.inflate(this, R.layout.item_scrollview, null); 
      view.setId(x); 
      view.setOnClickListener(this); 
      TextView tv= (TextView) view.findViewById(R.id.textview); 
      tv.setText(titles[x]); 
      mLinearLayout.addView(view); 
 
      textViewArray[x]=tv; 
      views[x]=view; 
 
    } 
  } 
 
  @Override 
  public void onClick(View v) { 
    ToastUtils.showToast(this,titles[(int) v.getId()]); 
    changeTextColor((int) v.getId()); 
    changeTextLocation((int) v.getId()); 
 
    Fragment fragment=null; 
 
    switch (v.getId()){ 
      case 0: 
        fragment=new FragmentOne(); 
        break; 
      case 1: 
        fragment=new Fragment1(); 
        break; 
      case 2: 
        fragment=new Fragment2(); 
        break; 
      case 3: 
        fragment=new Fragment3(); 
        break; 
      case 4: 
        fragment=new Fragment4(); 
        break; 
      case 5: 
        fragment=new Fragment5(); 
        break; 
      case 6: 
        fragment=new Fragment6(); 
        break; 
      case 7: 
        fragment=new Fragment7(); 
        break; 
    } 
    if(fragment!=null){ 
      getSupportFragmentManager().beginTransaction().replace(R.id.framelayout,fragment).commit(); 
    } 
  } 
  /** 
   * 改变textView的颜色 
   * @param id 
   */ 
  private void changeTextColor(int id) { 
    for (int i = 0; i < textViewArray.length; i++) { 
      if(i!=id){ 
        textViewArray[i].setBackgroundResource(android.R.color.transparent); 
        textViewArray[i].setTextColor(0xff000000); 
      }else { 
        textViewArray[id].setBackgroundResource(android.R.color.white); 
        textViewArray[id].setTextColor(0xffff5d5e); 
      } 
    } 
 
  } 
 
  /** 
   * 改变栏目位置 
   */ 
  private void changeTextLocation(int index) { 
 
    //views[clickPosition].getTop()针对其父视图的顶部相对位置 
    int x = (views[index].getTop() - mScrollView.getHeight() / 2); 
    mScrollView.smoothScrollTo(0, x); 
  } 
 
} 

源码等上传上去会再次发布链接,如果那里写的不好,欢迎私信,评论指导

源码下载:Scroll+Fragment仿京东分类效果

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

相关文章

  • Android优化提升应用启动速度及Splash页面的设计

    Android优化提升应用启动速度及Splash页面的设计

    这篇文章主要介绍了Android性能优化的一些相关资料,文章围绕提升应用启动速度及Splash页面的设计的内容展开介绍,需要的朋友可以参考一下,希望对你有所帮助
    2021-12-12
  • flutter 实现多布局列表的示例代码

    flutter 实现多布局列表的示例代码

    这篇文章主要介绍了flutter 实现多布局列表的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • Android仿手机QQ图案解锁功能

    Android仿手机QQ图案解锁功能

    这篇文章主要为大家详细介绍了Android仿手机QQ图案解锁功能的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • Flutter 包管理器和资源管理使用学习

    Flutter 包管理器和资源管理使用学习

    这篇文章主要为大家介绍了Flutter 包管理器和资源管理使用学习,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • Android使用ViewPager完成app引导页

    Android使用ViewPager完成app引导页

    这篇文章主要为大家详细介绍了Android使用ViewPager完成app引导页,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • Android中Notification 提示对话框

    Android中Notification 提示对话框

    Notification,俗称通知,是一种具有全局效果的通知,它展示在屏幕的顶端,首先会表现为一个图标的形式,当用户向下滑动的时候,展示出通知具体的内容
    2016-01-01
  • 解决Android 沉浸式状态栏和华为虚拟按键冲突问题

    解决Android 沉浸式状态栏和华为虚拟按键冲突问题

    对于现在的 App 来说,布局页面基本都会用到沉浸式状态栏,单纯的沉浸式状态栏很容易解决,但是在华为手机上存在一个底部虚拟按键的问题,会导致页面底部和顶部出现很大的问题,下面通过本文给大家分享Android 沉浸式状态栏和华为虚拟按键冲突问题,一起看看吧
    2017-07-07
  • android通过Location API显示地址信息的实现方法

    android通过Location API显示地址信息的实现方法

    这篇文章主要介绍了android通过Location API显示地址信息的方法,涉及Android操作Geocoder类获取地址信息的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • Flutter系列重学Container示例详解

    Flutter系列重学Container示例详解

    这篇文章主要为大家介绍了Flutter系列重学Container示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • 使用Fragment+ViewPager实现底部导航栏

    使用Fragment+ViewPager实现底部导航栏

    这篇文章主要为大家详细介绍了使用Fragment+ViewPager实现底部导航栏,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06

最新评论