//需要的依赖
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>
//从网络获取数据需要添加网络权限