Android ScrollableLayout实现仿简书个人中心

编程入门 行业动态 更新时间:2024-10-12 01:28:27

Android  ScrollableLayout实现仿简书个人<a href=https://www.elefans.com/category/jswz/34/1769240.html style=中心"/>

Android ScrollableLayout实现仿简书个人中心

我是用的一个很有名气的依赖库,当然这个依赖库不是我写的,但是那个依赖库,实现起来真的好麻烦啊,我写了一个主
页,你让我导入了十多个类,和将近十个布局,还有其他依赖包,但是不知道访问量怎么会那么多。废话不多说,看下我写
的,简便不简便你说了算。

这个功能当滑到顶部的时候,标题栏置顶,当标题栏置顶,下部列表滑倒第一条目的时候,标题栏才会跟着下来

首先现导入Moudle一个依赖包:

implementation 'com.github.cpoopc:scrollablelayoutlib:1.0.1'

下面是xml布局

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android=""xmlns:app=""android:id="@+id/mCoordina"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@color/white"><com.cpoopc.scrollablelayoutlib.ScrollableLayoutandroid:id="@+id/scrollbarlayout"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><ImageViewandroid:id="@+id/mImg_headimg"android:layout_width="match_parent"android:layout_height="318dp"android:layout_alignParentTop="true"android:layout_marginTop="-100dp"android:scaleType="fitXY"android:src="@mipmap/ic_launcher" /><android.support.design.widget.TabLayoutandroid:id="@+id/tablayout"android:layout_width="match_parent"android:layout_height="36dp"app:tabMaxWidth="0dp"app:tabGravity="fill"app:tabMode="fixed"/><android.support.v4.view.ViewPagerandroid:id="@+id/viewpager"android:layout_width="match_parent"android:layout_height="match_parent"app:layout_behavior="@string/appbar_scrolling_view_behavior"></android.support.v4.view.ViewPager></com.cpoopc.scrollablelayoutlib.ScrollableLayout></android.support.design.widget.CoordinatorLayout>

下面属于我的主运行类,你换成Acitivty即可

import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.Color;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.widget.AppCompatSeekBar;
import android.util.Log;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;import com.cpoopc.scrollablelayoutlib.ScrollableLayout;
import com.gcssloop.widget.RCRelativeLayout;
import com.lhss.mw.myapplication.R;
import com.lhss.mw.myapplication.mvp.base.MyBaseFragment;
import com.lhss.mw.myapplication.mvp.base.MyEmptyActivity;
import com.lhss.mw.myapplication.mvp.collection.MyCollectionsActivity;
import com.lhss.mw.myapplication.MyCallBack;
import com.lhss.mw.myapplication.MyNetClient;
import com.lhss.mw.myapplication.reponse.IndexUserBean;
import com.lhss.mw.myapplication.ui.Mime.MinePage.Activity.AttentionActivity;
import com.lhss.mw.myapplication.ui.Mime.MinePage.Activity.CommentActivity;
import com.lhss.mw.myapplication.ui.Mime.MinePage.Activity.DynamicActivity;
import com.lhss.mw.myapplication.ui.Mime.MinePage.Activity.FansActivity;
import com.lhss.mw.myapplication.ui.Mime.MinePage.Activity.NormalWebActivity;
import com.lhss.mw.myapplication.ui.Mime.MinePage.Activity.PostActivityNew;
import com.lhss.mw.myapplication.ui.Mime.MinePage.Activity.UserfeedbackActivity;
import com.lhss.mw.myapplication.ui.Mime.MinePage.Adapter.PersionImgAdapter;
import com.lhss.mw.myapplication.ui.Mime.SettingPage.Activity.SettingActivity;import com.lhss.mw.myapplication.ui.Mime.test.Activity_Test;
import com.lhss.mw.myapplication.ui.Mime.test.Fragment_Achievement;
import com.lhss.mw.myapplication.ui.Mime.test.Fragment_Coment;
import com.lhss.mw.myapplication.ui.Mime.test.Fragment_Discuss;
import com.lhss.mw.myapplication.ui.Mime.test.Fragment_Dynamic;
import com.lhss.mw.myapplication.ui.Mime.test.ScrollAbleFragment;
import com.lhss.mw.myapplication.utils.ActTo;
import com.lhss.mw.myapplication.utils.ImgUtils;
import com.lhss.mw.myapplication.utils.JsonUtils;
import com.lhss.mw.myapplication.utils.ToastUtils;
import com.lhss.mw.myapplication.view.MyScrollView;
import com.lhss.mw.myapplication.widget.PullScrollow.PullScrollView;import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import butterknife.Unbinder;/*** Created by fei on 2017/10/10 16:09*/public class MineFragmentNew extends MyBaseFragment implements  PullScrollView.OnTurnListener, MyScrollView.OnHeaderRefreshListener {private static final String TAG="MineFragmentNew";private TabLayout tabLayout;private ViewPager viewPager;private ArrayList<ScrollAbleFragment> fragmentList = new ArrayList<>();private List<String> titleList = new ArrayList<>();private ScrollableLayout scrollableLayout;private MyAdapter adapter;private TextView mTv_Title;public static MineFragmentNew newInstance() {MineFragmentNew fragment = new MineFragmentNew();Log.e(TAG,"newInstance");return fragment;}@Overrideprotected View initView() {View view = View.inflate(ctx, R.layout.activity_test, null);//实例化viewPager = (ViewPager) view.findViewById(R.id.viewpager);tabLayout = (TabLayout) view.findViewById(R.id.tablayout);scrollableLayout=view.findViewById(R.id.scrollbarlayout);initList();Log.e(TAG,"initView");return view;}private void initList() {Log.e(TAG,"我是initList");fragmentList.add(Fragment_Dynamic.newInstance());fragmentList.add(Fragment_Achievement.newInstance());fragmentList.add(Fragment_Discuss.newInstance());fragmentList.add(Fragment_Coment.newInstance());if(titleList.size==0){titleList.add("成就");titleList.add("动态");titleList.add("讨论");titleList.add("评价");}adapter = new MyAdapter(getChildFragmentManager(), getActivity(), titleList, fragmentList);viewPager.setAdapter(adapter);scrollableLayout.getHelper().setCurrentScrollableContainer(fragmentList.get(0));//绑定tabLayout.setupWithViewPager(viewPager);tabLayout.setTabMode(TabLayout.MODE_FIXED);setIndicator(tabLayout,23,23);//设置默认颜色和选中颜色tabLayout.setTabTextColors(Color.BLACK,getResources().getColor(R.color.gold));//设置下滑线颜色tabLayout.setSelectedTabIndicatorColor(getResources().getColor(R.color.gold));for (int i=0;i<tabLayout.getTabCount();i++){TabLayout.Tab tabAt = tabLayout.getTabAt(i);tabAt.setCustomView(adapter.getTabView(i));}}@Overrideprotected void initData() {}//设置分割线距离public void setIndicator(TabLayout tabs, int leftDip, int rightDip) {Class<?> tabLayout = tabs.getClass();Field tabStrip = null;try {tabStrip = tabLayout.getDeclaredField("mTabStrip");} catch (NoSuchFieldException e) {e.printStackTrace();}tabStrip.setAccessible(true);LinearLayout llTab = null;try {llTab = (LinearLayout) tabStrip.get(tabs);} catch (IllegalAccessException e) {e.printStackTrace();}int left = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, leftDip, Resources.getSystem().getDisplayMetrics());int right = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, rightDip, Resources.getSystem().getDisplayMetrics());for (int i = 0; i < llTab.getChildCount(); i++) {View child = llTab.getChildAt(i);child.setPadding(0, 0, 0, 0);LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 1);params.leftMargin = left;params.rightMargin = right;child.setLayoutParams(params);child.invalidate();}}//设置frament适配器class MyAdapter extends FragmentPagerAdapter {private Context context;List<String> titles;ArrayList<ScrollAbleFragment> fragments=new ArrayList<>();public MyAdapter(FragmentManager fm, Context context, List<String> titles, ArrayList<ScrollAbleFragment> fragments) {super(fm);this.context = context;this.titles = titles;this.fragments = fragments;}@Overridepublic Fragment getItem(int position) {//return Fragment_My.newInstance(titles.get(position));return fragments.get(position);}@Overridepublic int getCount() {return titles.size();}/*** 自定义方法,提供自定义Tab* <p>* position 位置* return返回Tab的View*/public View getTabView(int position) {View v = LayoutInflater.from(context).inflate(R.layout.tab_custom, null);mTv_Title = (TextView) v.findViewById(R.id.mTv_Title);mTv_Title.setText(titles.get(position));//添加一行,设置颜色mTv_Title.setTextColor(tabLayout.getTabTextColors());return v;}}@Overrideprotected void bindEvent() {}@Overridepublic void onHeaderRefresh(MyScrollView view) {}@Overridepublic void onTurn() {}
}

下面就添加一个Frgment,其他的都给它一样

package com.lhss.mw.myapplication.ui.Mime.test;import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.ArrayAdapter;
import android.widget.ListView;import com.cpoopc.scrollablelayoutlib.ScrollableHelper;
import com.lhss.mw.myapplication.R;import java.util.ArrayList;
import java.util.List;public class Fragment_Dynamic extends ScrollAbleFragment implements ScrollableHelper.ScrollableContainer{private View view;private ListView mListview;ArrayAdapter adapter = null;private List<String> list=new ArrayList<>();private int articleTypeId = 0;@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {view = inflater.inflate(R.layout.fragment_dynamic, null);initView(view);initList();return view;}private void initList() {for (int i=0;i<50;i++){list.add("我是第="+i+"条数据");}}private void initView(View view) {mListview=view.findViewById(R.id.mListView);adapter = new ArrayAdapter(getActivity(),android.R.layout.simple_list_item_1,list);mListview.setAdapter(adapter);mListview.setVerticalScrollBarEnabled(true);}private static String TITLE = "title";private static String ARTICLETYPEID = "articleTypeId";public static Fragment_Dynamic newInstance() {Fragment_Dynamic listFragment = new Fragment_Dynamic();return listFragment;}@Overridepublic View getScrollableView() {return mListview;}
}

更多推荐

Android ScrollableLayout实现仿简书个人中心

本文发布于:2024-03-09 20:16:53,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1726016.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:中心   Android   ScrollableLayout   仿简书

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!