类似今日头条网易新闻导航栏水平滑动的效果

其中部分是转载另一个博客哥们的,具体博客地址我忘了(不好意思)。我是在他基础上改写的。。。。

效果图如下:




主要布局是一个自定义的水平滑动scrollview(当然这里也可以用Android原生的控件也可以,但是我觉得扩展性不大)和一个viewpage

<span style="color:#000000;"><LinearLayout xmlns:android=""xmlns:tools=""android:layout_width="match_parent"android:layout_height="match_parent"android:background="#ffffff"android:orientation="vertical" ><RelativeLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content" ><com.shuaidainews.view.ColumnHorizontalScrollViewandroid:id="@+id/mColumnHorizontalScrollView"android:layout_width="match_parent"android:layout_height="wrap_content"android:scrollbars="none" ><LinearLayoutandroid:id="@+id/mRadioGroup_content"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_centerVertical="true"android:background="#333333"android:gravity="center_vertical"android:orientation="horizontal" /></com.shuaidainews.view.ColumnHorizontalScrollView></RelativeLayout><Viewandroid:layout_width="match_parent"android:layout_height="1dp"android:background="#eeeeee" /><android.support.v4.view.ViewPagerandroid:id="@+id/mViewPager"android:layout_width="match_parent"android:layout_height="match_parent" /></LinearLayout></span>

自定义水平滑动控件比较简单,看这里:

public class ColumnHorizontalScrollView extends HorizontalScrollView {/** 传入整体布局  */private View ll_content;/** 屏幕宽度 */private int mScreenWitdh = 0;/** 父类的活动activity */private Activity activity;public ColumnHorizontalScrollView(Context context) {super(context);}public ColumnHorizontalScrollView(Context context, AttributeSet attrs) {super(context, attrs);}public ColumnHorizontalScrollView(Context context, AttributeSet attrs,int defStyle) {super(context, attrs, defStyle);}/** * 传入父类布局中的资源文件* */public void setParam(Activity activity, int mScreenWitdh,View paramView1){this.activity = activity;this.mScreenWitdh = mScreenWitdh;this.ll_content = paramView1;}
}

title我则是用的实体类方式写死的,当然这也可以动态修改。看各位项目需求

private void initColumnData() {userChannelList = new ArrayList<ChannelItem>();ChannelItem item = new ChannelItem();item.setName("头条");item.setId(1);item.setOrderId(1);item.setSelected(1);userChannelList.add(item);item = new ChannelItem();item.setName("社会");item.setId(2);item.setOrderId(2);item.setSelected(2);userChannelList.add(item);item = new ChannelItem();item.setName("国内");item.setId(3);item.setOrderId(3);item.setSelected(3);userChannelList.add(item);item = new ChannelItem();item.setName("国际");item.setId(4);item.setOrderId(4);item.setSelected(4);userChannelList.add(item);item = new ChannelItem();item.setName("娱乐");item.setId(5);item.setOrderId(5);item.setSelected(5);userChannelList.add(item);item = new ChannelItem();item.setName("体育");item.setId(6);item.setOrderId(6);item.setSelected(6);userChannelList.add(item);item = new ChannelItem();item.setName("军事");item.setId(7);item.setOrderId(7);item.setSelected(7);userChannelList.add(item);item = new ChannelItem();item.setName("科技");item.setId(8);item.setOrderId(8);item.setSelected(8);userChannelList.add(item);item = new ChannelItem();item.setName("财经");item.setId(9);item.setOrderId(9);item.setSelected(9);userChannelList.add(item);item = new ChannelItem();item.setName("时尚");item.setId(10);item.setOrderId(10);item.setSelected(10);userChannelList.add(item);}

源码猛戳这里

类似今日头条网易新闻导航栏水平滑动的效果

其中部分是转载另一个博客哥们的,具体博客地址我忘了(不好意思)。我是在他基础上改写的。。。。

效果图如下:




主要布局是一个自定义的水平滑动scrollview(当然这里也可以用Android原生的控件也可以,但是我觉得扩展性不大)和一个viewpage

<span style="color:#000000;"><LinearLayout xmlns:android=""xmlns:tools=""android:layout_width="match_parent"android:layout_height="match_parent"android:background="#ffffff"android:orientation="vertical" ><RelativeLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content" ><com.shuaidainews.view.ColumnHorizontalScrollViewandroid:id="@+id/mColumnHorizontalScrollView"android:layout_width="match_parent"android:layout_height="wrap_content"android:scrollbars="none" ><LinearLayoutandroid:id="@+id/mRadioGroup_content"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_centerVertical="true"android:background="#333333"android:gravity="center_vertical"android:orientation="horizontal" /></com.shuaidainews.view.ColumnHorizontalScrollView></RelativeLayout><Viewandroid:layout_width="match_parent"android:layout_height="1dp"android:background="#eeeeee" /><android.support.v4.view.ViewPagerandroid:id="@+id/mViewPager"android:layout_width="match_parent"android:layout_height="match_parent" /></LinearLayout></span>

自定义水平滑动控件比较简单,看这里:

public class ColumnHorizontalScrollView extends HorizontalScrollView {/** 传入整体布局  */private View ll_content;/** 屏幕宽度 */private int mScreenWitdh = 0;/** 父类的活动activity */private Activity activity;public ColumnHorizontalScrollView(Context context) {super(context);}public ColumnHorizontalScrollView(Context context, AttributeSet attrs) {super(context, attrs);}public ColumnHorizontalScrollView(Context context, AttributeSet attrs,int defStyle) {super(context, attrs, defStyle);}/** * 传入父类布局中的资源文件* */public void setParam(Activity activity, int mScreenWitdh,View paramView1){this.activity = activity;this.mScreenWitdh = mScreenWitdh;this.ll_content = paramView1;}
}

title我则是用的实体类方式写死的,当然这也可以动态修改。看各位项目需求

private void initColumnData() {userChannelList = new ArrayList<ChannelItem>();ChannelItem item = new ChannelItem();item.setName("头条");item.setId(1);item.setOrderId(1);item.setSelected(1);userChannelList.add(item);item = new ChannelItem();item.setName("社会");item.setId(2);item.setOrderId(2);item.setSelected(2);userChannelList.add(item);item = new ChannelItem();item.setName("国内");item.setId(3);item.setOrderId(3);item.setSelected(3);userChannelList.add(item);item = new ChannelItem();item.setName("国际");item.setId(4);item.setOrderId(4);item.setSelected(4);userChannelList.add(item);item = new ChannelItem();item.setName("娱乐");item.setId(5);item.setOrderId(5);item.setSelected(5);userChannelList.add(item);item = new ChannelItem();item.setName("体育");item.setId(6);item.setOrderId(6);item.setSelected(6);userChannelList.add(item);item = new ChannelItem();item.setName("军事");item.setId(7);item.setOrderId(7);item.setSelected(7);userChannelList.add(item);item = new ChannelItem();item.setName("科技");item.setId(8);item.setOrderId(8);item.setSelected(8);userChannelList.add(item);item = new ChannelItem();item.setName("财经");item.setId(9);item.setOrderId(9);item.setSelected(9);userChannelList.add(item);item = new ChannelItem();item.setName("时尚");item.setId(10);item.setOrderId(10);item.setSelected(10);userChannelList.add(item);}

源码猛戳这里