加载GIF和视频

//fresco图片依赖
compile 'com.facebook.fresco:fresco:1.5.0'
compile 'com.facebook.fresco:animated-gif:1.5.0'
//加载gif动图需添加此库
compile 'com.facebook.fresco:animated-webp:1.5.0'
//加载webp动图需添加此库
compile 'com.facebook.fresco:webpsupport:1.5.0'
//支持webp需添加此库
compile 'com.facebook.fresco:imagepipeline-okhttp3:1.5.0'
//网络实现层使用okhttp3需添加此库
compile 'jp.wasabeef:fresco-processors:2.1.0@aar'
//用于提供fresco的各种图片变换
//ok
implementation 'com.squareup.okhttp3:logging-interceptor:3.10.0'
implementation 'com.squareup.okhttp3:okhttp:3.10.0'
//gson
implementation 'com.google.code.gson:gson:2.8.5'
//recycleview依赖
implementation 'com.android.support:recyclerview-v7:26.1.0'
//rxjava
implementation 'com.squareup.retrofit2:retrofit:2.4.0'
implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.4.0'
implementation 'io.reactivex.rxjava2:rxjava:2.1.13'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
implementation 'com.google.dagger:dagger:2.8'
annotationProcessor 'com.google.dagger:dagger-compiler:2.7'
implementation files('libs/flowlayout-lib.zip')

compile 'cn.jzvd:jiaozivideoplayer:6.2.3'

//解决版本冲突

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support') {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion '27.1.1'
            }
        }
    }

}

清单文件


fresco工具类

package com.example.administrator.myapplication13.presenter;

import android.app.Application;

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

/**
 * data:2018/06/16.
 * author : 殷成龙(Administrator)
 * function :
 */

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Fresco.initialize(this);
    }
}
ok解析工具类

package com.example.administrator.myapplication13.presenter;

import java.io.IOException;
import java.util.concurrent.TimeUnit;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.logging.HttpLoggingInterceptor;
import android.os.Handler;
/**
 * data:2018/06/16.
 * author : 殷成龙(Administrator)
 * function :
 */

public class OkHttpManger {

    private final OkHttpClient okHttpClient;
    private static Handler handler;
    private static OkHttpManger smanager; HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY);

    private OkHttpManger(){


        okHttpClient = new OkHttpClient.Builder()
                .addInterceptor(interceptor)
                .writeTimeout(1000, TimeUnit.SECONDS)
                .readTimeout(1000,TimeUnit.SECONDS)
                .connectTimeout(1000,TimeUnit.SECONDS)
                .build();
        handler = new Handler();
    }
    public static OkHttpManger getInstance(){
        if(smanager==null){
            smanager = new OkHttpManger();
        }
        return smanager;
    }
    public interface Func1{
        void onResponse(String reqult);
    }
    private static void onSuccessJsonStringMethod(final String jsonValue,final Func1 callBack){
        handler.post(new Runnable() {
            @Override
            public void run() {
                if(callBack!=null){
                    callBack.onResponse(jsonValue);
                }
            }
        });
    }
    public void asyncJsonStringByURL(final String url,final Func1 callBack){
        Request request = new Request.Builder().url(url).build();
        okHttpClient.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
            }
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                onSuccessJsonStringMethod(response.body().string(),callBack);
            }
        });
    }

}
图片适配器

package com.example.administrator.myapplication13.view.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.example.administrator.myapplication13.R;
import com.example.administrator.myapplication13.model.SuperClass;
import com.facebook.drawee.view.SimpleDraweeView;

import java.util.List;

/**
 * data:2018/06/16.
 * author : 殷成龙(Administrator)
 * function :
 */

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
    private List<SuperClass.DataBean> list;
    private Context context;

    public MyAdapter(List<SuperClass.DataBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = View.inflate(context, R.layout.fragment03_item, null);
        ViewHolder holder = new ViewHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        holder.tv1.setText(list.get(position).getScreen_name());
        holder.img1.setImageURI(list.get(position).getProfile_image());
        holder.tv2.setText(list.get(position).getText());
        holder.img2.setImageURI(list.get(position).getCdn_img());
    }

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

    public class ViewHolder extends RecyclerView.ViewHolder {

        private final TextView tv1;
        private final TextView tv2;
        private final SimpleDraweeView img1;
        private final SimpleDraweeView img2;

        public ViewHolder(View itemView) {
            super(itemView);
            tv1 = itemView.findViewById(R.id.fragment03_tv1);
            tv2 = itemView.findViewById(R.id.fragment03_tv2);
            img1 = itemView.findViewById(R.id.fragmetn03_img1);
            img2 = itemView.findViewById(R.id.fragment03_img2);
        }
    }
}

视频适配器

package com.example.administrator.myapplication13.view.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.example.administrator.myapplication13.R;
import com.example.administrator.myapplication13.model.BeanClass;
import com.facebook.drawee.view.SimpleDraweeView;

import java.util.List;

import cn.jzvd.JZVideoPlayerStandard;

/**
 * data:2018/06/16.
 * author : 殷成龙(Administrator)
 * function :
 */

public class MyBeanAdapter extends RecyclerView.Adapter<MyBeanAdapter.ViewHolder> {
    private List<BeanClass.DataBean> list;
    private Context context;

    public MyBeanAdapter(List<BeanClass.DataBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = View.inflate(context, R.layout.fragment04_item, null);
        ViewHolder holder = new ViewHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        holder.tv1.setText(list.get(position).getScreen_name());
        holder.img1.setImageURI(list.get(position).getProfile_image());
        holder.tv2.setText(list.get(position).getText());
        holder.img2.setUp(list.get(position).getCdn_img(),holder.img2.SCREEN_WINDOW_NORMAL);
    }

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

    public class ViewHolder extends RecyclerView.ViewHolder {

        private final TextView tv1;
        private final TextView tv2;
        private final SimpleDraweeView img1;
        private final JZVideoPlayerStandard  img2;

        public ViewHolder(View itemView) {
            super(itemView);
            tv1 = itemView.findViewById(R.id.fragment04_tv1);
            tv2 = itemView.findViewById(R.id.fragment04_tv2);
            img1 = itemView.findViewById(R.id.fragmetn04_img1);
            img2 = itemView.findViewById(R.id.fragment04_img2);
        }
    }
}

图片界面

package com.example.administrator.myapplication13.view.fragment;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;

import com.example.administrator.myapplication13.R;
import com.example.administrator.myapplication13.model.SuperClass;
import com.example.administrator.myapplication13.presenter.OkHttpManger;
import com.example.administrator.myapplication13.presenter.okhttputil;
import com.example.administrator.myapplication13.view.adapter.MyAdapter;
import com.google.gson.Gson;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;

/**
 * data:2018/06/16.
 * author : 殷成龙(Administrator)
 * function :
 */

public class Fragment03 extends Fragment {
    private int type = 3;
    private String url = "https://www.apiopen.top/satinApi?type="+type+"&page=1";
    private List<SuperClass.DataBean> list;
    private RecyclerView rv;
    private static final int SUCCESS = 492;
    Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            String string = (String) msg.obj;

        }
    };
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment03, container, false);
        initView(view);
        //initData();
        getDataMao();
        return view;
    }

    private void getDataMao() {
        list=new ArrayList<>();
        OkHttpManger instance = OkHttpManger.getInstance();
        instance.asyncJsonStringByURL(url, new OkHttpManger.Func1() {
            @Override
            public void onResponse(String reqult) {
                Gson gson = new Gson();
               // Toast.makeText(getActivity(),reqult,Toast.LENGTH_SHORT).show();
                SuperClass superClass = gson.fromJson(reqult, SuperClass.class);
                list = superClass.getData();
                //Toast.makeText(getActivity(), list+"",Toast.LENGTH_SHORT).show();
                MyAdapter myAdapter = new MyAdapter(list,getActivity());
                rv.setAdapter(myAdapter);
            }
        });
    }

    private void initView(View view) {
        rv = view.findViewById(R.id.rv);
        rv.setLayoutManager(new LinearLayoutManager(getActivity(),LinearLayoutManager.VERTICAL, false));
    }

    private void initData() {
        okhttputil.doGet(url, new Callback() {

            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String string = response.body().string();
                Gson gson = new Gson();
                SuperClass superClass = gson.fromJson(string, SuperClass.class);
                list = superClass.getData();
                //Toast.makeText(getActivity(), list+"",Toast.LENGTH_SHORT).show();
                MyAdapter myAdapter = new MyAdapter(list,getActivity());
                rv.setAdapter(myAdapter);

            }
        });
    }
}

视频界面

package com.example.administrator.myapplication13.view.fragment;

import android.annotation.SuppressLint;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;

import com.example.administrator.myapplication13.R;
import com.example.administrator.myapplication13.model.BeanClass;
import com.example.administrator.myapplication13.model.SuperClass;
import com.example.administrator.myapplication13.presenter.okhttputil;
import com.example.administrator.myapplication13.view.adapter.MyAdapter;
import com.example.administrator.myapplication13.view.adapter.MyBeanAdapter;
import com.google.gson.Gson;

import java.io.IOException;
import java.util.List;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;

/**
 * data:2018/06/16.
 * author : 殷成龙(Administrator)
 * function :
 */

public class Fragment04 extends Fragment {

    private RecyclerView rv;
    private int type = 4;
    private String url = "https://www.apiopen.top/satinApi?type="+type+"&page=1";
    private static final int SUCCESS = 492;
    private List<BeanClass.DataBean> list;
    @SuppressLint("HandlerLeak")
    Handler handler = new Handler(){

        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            String string = (String) msg.obj;
            Gson gson = new Gson();
            BeanClass beanClass = gson.fromJson(string, BeanClass.class);
            list = beanClass.getData();
            MyBeanAdapter myAdapter = new MyBeanAdapter(list,getActivity());
            rv.setAdapter(myAdapter);
        }
    };

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment04, container, false);
        initView(view);
        initData();
        return view;
    }

    private void initData() {
        okhttputil.doGet(url, new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String string = response.body().string();
                Message message = handler.obtainMessage();
                message.obj = string;
                message.what = SUCCESS;
                handler.sendMessage(message);

            }
        });
    }

    private void initView(View view) {
        rv = view.findViewById(R.id.rv);
        rv.setLayoutManager(new LinearLayoutManager(getContext(),LinearLayoutManager.VERTICAL, false));
    }
}
主页面

package com.example.administrator.myapplication13;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.FrameLayout;
import android.widget.RadioGroup;

import com.example.administrator.myapplication13.view.fragment.Fragment01;
import com.example.administrator.myapplication13.view.fragment.Fragment02;
import com.example.administrator.myapplication13.view.fragment.Fragment03;
import com.example.administrator.myapplication13.view.fragment.Fragment04;
import com.example.administrator.myapplication13.view.fragment.Fragment05;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private RadioGroup rg;
    private FrameLayout fl;
    private Fragment01 fragment01;
    private Fragment02 fragment02;
    private Fragment03 fragment03;
    private Fragment04 fragment04;
    private Fragment05 fragment05;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();

        List<Fragment> list = new ArrayList<>();
        fragment01 = new Fragment01();
        fragment02 = new Fragment02();
        fragment03 = new Fragment03();
        fragment04 = new Fragment04();
        fragment05 = new Fragment05();
        list.add(fragment01);
        list.add(fragment02);
        list.add(fragment03);
        list.add(fragment04);
        list.add(fragment05);
        final FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.add(R.id.fl,list.get(0)).commit();
        rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch (checkedId){
                    case R.id.rg1:
                        fragmentManager.beginTransaction().replace(R.id.fl,fragment01).commit();
                        break;
                    case R.id.rg2:
                        fragmentManager.beginTransaction().replace(R.id.fl,fragment02).commit();
                        break;
                    case R.id.rg3:
                        fragmentManager.beginTransaction().replace(R.id.fl,fragment03).commit();
                        break;
                    case R.id.rg4:
                        fragmentManager.beginTransaction().replace(R.id.fl,fragment04).commit();
                        break;
                    case R.id.rg5:
                        fragmentManager.beginTransaction().replace(R.id.fl,fragment05).commit();
                        break;
                }
            }
        });
    }

    private void initView() {
        rg = findViewById(R.id.rg);
        fl = findViewById(R.id.fl);
    }
}
 

布局

主布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:orientation="vertical"
    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"
    tools:context="com.example.administrator.myapplication13.MainActivity">

    <RadioGroup
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:id="@+id/rg"
        android:orientation="horizontal">
        <RadioButton
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:background="@drawable/selector"
            android:gravity="center"
            android:layout_weight="1"
            android:button="@null"
            android:text="推荐"
            android:id="@+id/rg1"/>
        <RadioButton
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:background="@drawable/selector"
            android:gravity="center"
            android:layout_weight="1"
            android:button="@null"
            android:text="文字"
            android:id="@+id/rg2"/>
        <RadioButton
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:background="@drawable/selector"
            android:gravity="center"
            android:layout_weight="1"
            android:button="@null"
            android:text="图片"
            android:id="@+id/rg3"/>
        <RadioButton
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:background="@drawable/selector"
            android:gravity="center"
            android:layout_weight="1"
            android:button="@null"
            android:checked="true"
            android:text="视频"
            android:id="@+id/rg4"/>
        <RadioButton
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:background="@drawable/selector"
            android:gravity="center"
            android:layout_weight="1"
            android:button="@null"
            android:text="预留"
            android:id="@+id/rg5"/>
    </RadioGroup>
<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="9"
    android:id="@+id/fl"></FrameLayout>
</LinearLayout>
两个fragment布局


图片布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:orientation="vertical"
    xmlns:fresco="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <com.facebook.drawee.view.SimpleDraweeView
            android:layout_width="50dp"
            android:layout_height="50dp"
            fresco:actualImageScaleType="centerCrop"
            fresco:placeholderImageScaleType="centerCrop"
            android:id="@+id/fragmetn03_img1"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/fragment03_tv1"/>
    </LinearLayout>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/fragment03_tv2"/>
    <com.facebook.drawee.view.SimpleDraweeView
        android:layout_width="200dp"
        android:layout_height="200dp"
        fresco:actualImageScaleType="centerCrop"
        fresco:placeholderImageScaleType="centerCrop"
        android:id="@+id/fragment03_img2"/>
</LinearLayout>


视频布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:orientation="vertical"
    xmlns:fresco="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <com.facebook.drawee.view.SimpleDraweeView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            fresco:actualImageScaleType="centerCrop"
            fresco:placeholderImageScaleType="centerCrop"
            android:id="@+id/fragmetn04_img1"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/fragment04_tv1"/>
    </LinearLayout>
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/fragment04_tv2"/>
    <cn.jzvd.JZVideoPlayerStandard
        android:layout_width="match_parent"
        android:layout_height="200dp"
        fresco:actualImageScaleType="centerCrop"
        fresco:placeholderImageScaleType="centerCrop"
        android:id="@+id/fragment04_img2"/>
</LinearLayout>

加载视频所需包


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值