Android基础——AppBarLayout+Material Design实例

//需要的依赖

    compile 'com.squareup.retrofit2:retrofit:2.3.0'
    compile 'com.squareup.retrofit2:converter-gson:2.3.0'
    compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'
    compile 'com.facebook.fresco:fresco:1.5.0'
    compile 'com.android.support:design:26.0.0-alpha1'

//主界面布局

<?xml version="1.0" encoding="utf-8"?>

    <android.support.design.widget.CoordinatorLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:fitsSystemWindows="true">

        <android.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:fitsSystemWindows="true"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

            <!--记得要设layout_scrollFlags-->
            <android.support.design.widget.CollapsingToolbarLayout
                android:layout_width="match_parent"
                android:layout_height="250dp"
                android:fitsSystemWindows="true"
                app:contentScrim="?attr/colorPrimary"
                app:layout_scrollFlags="scroll|exitUntilCollapsed"
                android:id="@+id/collapse_toolbar">
                <!--这里的高度很关键,决定了收缩后顶部的高度-->
                <!--如果想收缩后还有其他控件就设大一点,否则wrap_content就好了-->
                <!--layout_collapseMode设为pin的话ImageView最后会留在顶部-->
                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="100dp"
                    android:gravity="top"
                    android:minHeight="?attr/actionBarSize"
                    app:layout_collapseMode="pin"
                    app:titleMarginTop="15dp"
                    android:src="@mipmap/ic_launcher"/>


            </android.support.design.widget.CollapsingToolbarLayout>
        </android.support.design.widget.AppBarLayout>

        <!--一定要把layout_behavior设为@string/appbar_scrolling_view_behavior-->
        <android.support.v7.widget.RecyclerView
            android:id="@+id/moive_rv"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:layout_behavior="@string/appbar_scrolling_view_behavior">
        </android.support.v7.widget.RecyclerView>

    </android.support.design.widget.CoordinatorLayout>

//主界面代码

package com.jj.day3_2;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;

import java.util.List;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class MainActivity extends AppCompatActivity {
//    private String path="http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1";
    private RecyclerView rv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        rv=(RecyclerView)findViewById(R.id.moive_rv);
        rv.setLayoutManager(new GridLayoutManager(this,2));

        Retrofit.Builder builder=new Retrofit.Builder();
        builder.baseUrl("http://www.qubaobei.com/ios/");
        builder.addConverterFactory(GsonConverterFactory.create());
        Retrofit retrofit=builder.build();

        QubaobeiInterface qubaobeiInterface=retrofit.create(QubaobeiInterface.class);
        Call<Qubaobei> call=qubaobeiInterface.getData();
        call.enqueue(new Callback<Qubaobei>() {
            @Override
            public void onResponse(Call<Qubaobei> call, Response<Qubaobei> response) {
                Qubaobei qubaobei=response.body();
                List<Qubaobei.DataBean> data=qubaobei.getData();
                FoodGridAdapter adapter=new FoodGridAdapter(MainActivity.this,data);
                rv.setAdapter(adapter);
            }

            @Override
            public void onFailure(Call<Qubaobei> call, Throwable t) {

            }
        });
    }
}


//MyApp中初始化

package com.jj.day3_2;

import android.app.Application;

import com.facebook.drawee.backends.pipeline.Fresco;

/**
 * Created by jj on 2018/3/10.
 */

public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();

        Fresco.initialize(this);
    }
}

//网络获取数据,需要一个实体类 Qubaobei.class

//定义一个接口

package com.jj.day3_2;

import retrofit2.Call;
import retrofit2.http.GET;

/**
 * Created by jj on 2018/3/10.
 */

public interface QubaobeiInterface {
   @GET("cf/dish_list.php?stage_id=1&limit=20&page=1")
    Call<Qubaobei> getData();
}

//适配器

package com.jj.day3_2;

import android.content.Context;
import android.net.Uri;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.facebook.drawee.view.SimpleDraweeView;

import java.util.List;

/**
 * Created by jj on 2018/3/10.
 */

public class FoodGridAdapter extends RecyclerView.Adapter<FoodGridAdapter.Hello> {

    private Context context;
    private List<Qubaobei.DataBean> mDatas;
    public FoodGridAdapter() {
    }

    public FoodGridAdapter(Context context, List<Qubaobei.DataBean> mDatas) {
        this.context = context;
        this.mDatas = mDatas;
    }

    @Override
    public Hello onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemview= LayoutInflater.from(context).inflate(R.layout.item_layout,parent,false);
        Hello hello=new Hello(itemview);
        return hello;
    }

    @Override
    public void onBindViewHolder(Hello holder, int position) {
         Qubaobei.DataBean dataBean=mDatas.get(position);
        holder.tv.setText(dataBean.getTitle());
        holder.iv.setImageURI(Uri.parse(mDatas.get(position).getPic()));

    }

    @Override
    public int getItemCount() {
        return mDatas.size();
    }

    class Hello extends RecyclerView.ViewHolder{

        TextView tv;
        SimpleDraweeView iv;
        public Hello(View itemView) {
            super(itemView);
            tv=(TextView)itemView.findViewById(R.id.tv);
            iv=(SimpleDraweeView)itemView.findViewById(R.id.iv);
        }
    }
}

//小界面

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    android:id="@+id/detail_content"
    >
    <android.support.design.widget.AppBarLayout
        android:id="@+id/app_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fitsSystemWindows="true"
        >

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/toolbar_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true"
            app:contentScrim="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|exitUntilCollapsed">

            <ImageView
                android:id="@+id/detail_img"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:fitsSystemWindows="true"
                android:scaleType="fitXY"
                android:background="@mipmap/ic_launcher"
                app:layout_collapseMode="parallax"
                app:layout_collapseParallaxMultiplier="0.7" />
            <android.support.v7.widget.RecyclerView
                android:id="@+id/moive_rv"

                android:layout_width="match_parent"
                android:layout_height="wrap_content">

            </android.support.v7.widget.RecyclerView>


        </android.support.design.widget.CollapsingToolbarLayout>

    </android.support.design.widget.AppBarLayout>




</android.support.design.widget.CoordinatorLayout>

//item界面

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto">
     <com.facebook.drawee.view.SimpleDraweeView
         android:id="@+id/iv"
         android:layout_width="match_parent"
         android:layout_height="160dp"
         app:roundAsCircle="true"
         android:scaleType="centerCrop"
         android:src="@mipmap/ic_launcher"/>
    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="油焖大虾"
        android:textSize="20dp"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="10dp"
        android:layout_below="@id/iv"
        android:textColor="@android:color/black"
        android:layout_centerInParent="true"/>
</RelativeLayout>
//从网络获取数据需要添加网络权限

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值