• CollapsingTollbrLayout


    main_activity.xml

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/swipe_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:addStatesFromChildren="true"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">
    
        <android.support.design.widget.CoordinatorLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">
    
            <android.support.design.widget.AppBarLayout
                android:id="@+id/appbar_layout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:fitsSystemWindows="true">
    
                <android.support.design.widget.CollapsingToolbarLayout
                    android:id="@+id/collapsing_toolbar_layout"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    app:contentScrim="#30469b"
                    app:expandedTitleMarginStart="48dp"
                    app:layout_scrollFlags="scroll|exitUntilCollapsed">
    
                    <ImageView
                        android:layout_width="match_parent"
                        android:layout_height="256dp"
                        android:scaleType="centerCrop"
                        android:src="@mipmap/bg"
                        app:layout_collapseMode="parallax"
                        app:layout_collapseParallaxMultiplier="0" />
    
    
                </android.support.design.widget.CollapsingToolbarLayout>
            </android.support.design.widget.AppBarLayout>
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical"
                app:layout_behavior="@string/appbar_scrolling_view_behavior">
    
                <android.support.design.widget.TabLayout
                    android:id="@+id/tablayout"
                    android:layout_width="match_parent"
                    android:layout_height="50dp" />
    
                <android.support.v4.view.ViewPager
                    android:id="@+id/viewpager"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent">
    
                </android.support.v4.view.ViewPager>
            </LinearLayout>
        </android.support.design.widget.CoordinatorLayout>
    </android.support.v4.widget.SwipeRefreshLayout>

    MainActivity.java

    package com.example.myapplication;
    
    import android.graphics.Color;
    import android.os.Bundle;
    import android.support.design.widget.AppBarLayout;
    import android.support.design.widget.CollapsingToolbarLayout;
    import android.support.design.widget.TabLayout;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentStatePagerAdapter;
    import android.support.v4.view.ViewPager;
    import android.support.v4.widget.SwipeRefreshLayout;
    import android.support.v7.app.ActionBarActivity;
    import android.support.v7.widget.DefaultItemAnimator;
    import android.support.v7.widget.RecyclerView;
    import android.support.v7.widget.StaggeredGridLayoutManager;
    import android.support.v7.widget.Toolbar;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.Toast;
    
    import java.util.ArrayList;
    import java.util.List;
    
    
    public class MainActivity extends ActionBarActivity {
        private RecyclerView mRecyclerView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            initCollapsingToolbarLayout();
            initViewPager();
            initRefresh();
        }
    
        public void initViewPager() {
            final ArrayList<String> title = new ArrayList<>();
            title.add("TITLE1");
            title.add("TITLE2");
            TabLayout tabLayout = (TabLayout) findViewById(R.id.tablayout);
            ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
            viewPager.setAdapter(new FragmentStatePagerAdapter(getSupportFragmentManager()) {
                @Override
                public Fragment getItem(int position) {
                    return new ItemFragment();
                }
                @Override
                public int getCount() {
                    return 2;
                }
                @Override
                public CharSequence getPageTitle(int position) {
                    return title.get(position);
                }
            });
    
            tabLayout.setupWithViewPager(viewPager);
        }
    
        public void initCollapsingToolbarLayout() {
            //使用CollapsingToolbarLayout必须把title设置到CollapsingToolbarLayout上,设置到Toolbar上则不会显示
            CollapsingToolbarLayout mCollapsingToolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.collapsing_toolbar_layout);
            mCollapsingToolbarLayout.setTitle("CollapsingToolbarLayout");
            //通过CollapsingToolbarLayout修改字体颜色
            mCollapsingToolbarLayout.setExpandedTitleColor(Color.WHITE);//设置还没收缩时状态下字体颜色
            mCollapsingToolbarLayout.setCollapsedTitleTextColor(Color.GREEN);//设置收缩后Toolbar上字体的颜色
        }
    
        public void initRefresh() {
            final SwipeRefreshLayout mSwipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_layout);
    
            AppBarLayout appBarLayout = (AppBarLayout) findViewById(R.id.appbar_layout);
            appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
                @Override
                public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
    
                    if (verticalOffset >= 0) {
                        mSwipeRefreshLayout.setEnabled(true);
                    } else {
                        mSwipeRefreshLayout.setEnabled(false);
                    }
                }
            });
        }
    
    
    }
    MyRecyclerViewAdapter.java
    package com.example.myapplication;
    
    import android.content.Context;
    import android.support.v7.widget.RecyclerView;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.TextView;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * Created by 晓勇 on 2015/7/12 0012.
     */
    public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyViewHolder> {
        private List<Integer> datas;
        private Context context;
        private List<Integer> lists;
    
        public MyRecyclerViewAdapter(Context context, List<Integer> datas) {
            this.datas = datas;
            this.context = context;
            getRandomHeights(datas);
        }
    
        private void getRandomHeights(List<Integer> datas) {
            lists = new ArrayList<>();
            for (int i = 0; i < datas.size(); i++) {
                lists.add((int) (200 + Math.random() * 400));
            }
        }
    
        @Override
        public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(context).inflate(R.layout.layout_item, parent, false);
            MyViewHolder viewHolder = new MyViewHolder(view);
            return viewHolder;
        }
    
        @Override
        public void onBindViewHolder(MyViewHolder holder, int position) {
            ViewGroup.LayoutParams params = holder.itemView.getLayoutParams();
            params.height = lists.get(position);//把随机的高度赋予item布局
            holder.itemView.setLayoutParams(params);
            holder.mTextView.setText(position+"");
        }
    
        @Override
        public int getItemCount() {
            return datas.size();
        }
    }
    
    class MyViewHolder extends RecyclerView.ViewHolder {
        TextView mTextView;
        public MyViewHolder(View itemView) {
            super(itemView);
            mTextView = (TextView) itemView.findViewById(R.id.item_tv);
        }
    }
    ItemFragment.java
    package com.example.myapplication;
    
    import android.os.Bundle;
    import android.support.annotation.Nullable;
    import android.support.v4.app.Fragment;
    import android.support.v7.widget.DefaultItemAnimator;
    import android.support.v7.widget.RecyclerView;
    import android.support.v7.widget.StaggeredGridLayoutManager;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * Created by gongsheng on 2016/9/5.
     */
    public class ItemFragment extends Fragment {
    
        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
            View view=inflater.inflate(R.layout.fragment_itme,null);
            initDate(view);
            return view;
        }
    
        private void initDate(View v){
            RecyclerView mRecyclerView = (RecyclerView) v.findViewById(R.id.recyclerView);
            mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
            mRecyclerView.setItemAnimator(new DefaultItemAnimator());
            List<Integer> datas = new ArrayList<>();
            for (int i = 0; i < 100; i++) {
                datas.add(i);
            }
            mRecyclerView.setAdapter(new MyRecyclerViewAdapter(getActivity(), datas));
        }
    }

    fragment_itme.java

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="match_parent"
        android:layout_height="match_parent">
        <android.support.v7.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scrollbars="none" />
    </LinearLayout>
  • 相关阅读:
    在静态工具类中需要注入mapper
    springboot整合mybatis之用外置服务器启动项目(二)
    基于java 的websocket的聊天功能,一开始初始化websocket,执行打开连接之后就直接关闭连接了。
    Lwip的相关资料
    轻量级的应用服务器基础框架
    libevent和基于libevent的网络编程
    protobuf的使用
    module graceful-fs for npm
    Filebeat命令参考
    Filebeat原理与简单配置入门
  • 原文地址:https://www.cnblogs.com/g-sheng/p/5859225.html
Copyright © 2020-2023  润新知