package com.bw.mylibrary.presenter;
import java.lang.ref.WeakReference;
import io.reactivex.disposables.CompositeDisposable;
public class BasePresentr <V>{
WeakReference<V>weakReference;
protected CompositeDisposable disposable=new CompositeDisposable();
public void Chuang(V view){
if(weakReference==null){
weakReference=new WeakReference<V>(view);
}
}
public void Xiao(){
if(weakReference!=null){
weakReference.clear();
weakReference=null;
}
if(disposable!=null){
disposable.clear();
disposable=null;
}
}
public Boolean Pan(){
return weakReference!=null&&weakReference.get()!=null;
}
public V getview(){
if(weakReference!=null&&weakReference.get()!=null){
return weakReference.get();
}
return null;
}
}
package com.bw.mylibrary.view;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.bw.mylibrary.presenter.BasePresentr;
public abstract class BaseFragment<V,P extends BasePresentr<V>> extends Fragment {
protected P presenter;
protected View view;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view=inflater.inflate(bingLayou(),null);
return view;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
intiData();
intiView();
if(presenter!=null){
presenter.Chuang((V) this);
}
}
@Override
public void onDestroy() {
super.onDestroy();
presenter.Xiao();
}
protected abstract void intiView();
protected abstract void intiData();
protected abstract int bingLayou();
}
package com.bw.mylibrary.view;
import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import com.bw.mylibrary.presenter.BasePresentr;
public abstract class BaseAtiviy <V,P extends BasePresentr<V>>extends AppCompatActivity {
protected P presenter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(bingLayou());
intiView();
intiData();
if(presenter!=null){
presenter.Chuang((V) this);
}
}
protected abstract void intiView();
protected abstract void intiData();
@Override
protected void onDestroy() {
super.onDestroy();
presenter.Xiao();
}
protected abstract int bingLayou();
}
package com.bw.rikao_6_29.ten;
public class TenCon {
public static final String JIZHUN="http://43.143.146.165:7777";
public static final String SHOPIN="/video/findVideos?pageSize=30";
public static final String SHIPINAME="/video/findVideoByName?";
}
package com.bw.rikao_6_29.ten;
import com.google.gson.Gson;
import java.util.concurrent.TimeUnit;
import io.reactivex.android.schedulers.AndroidSchedulers;
import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
public class OkHttp {
private OkHttp(){}
private static OkHttp okHttp=null;
public static OkHttp getOkHttp(){
if(okHttp==null) {
okHttp = new OkHttp();
}
return okHttp;
}
private Retrofit retrofit;
public Retrofit getRetrofit(){
OkHttpClient okHttpClient=new OkHttpClient()
.newBuilder()
.writeTimeout(5, TimeUnit.MINUTES)
.connectTimeout(5, TimeUnit.MINUTES)
.readTimeout(5, TimeUnit.MINUTES)
.addInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY))
.build();
retrofit=new Retrofit.Builder()
.baseUrl(TenCon.JIZHUN)
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
return retrofit;
}
}
package com.bw.rikao_6_29.ten;
import com.bw.rikao_6_29.entiy.ShiPinEnity;
import io.reactivex.Observable;
import retrofit2.http.GET;
import retrofit2.http.Query;
public interface APis {
@GET(TenCon.SHOPIN)
Observable<ShiPinEnity>ShiPinList(@Query("currentPage")int page);
@GET(TenCon.SHIPINAME)
Observable<ShiPinEnity>ShiPinName(@Query("keywords")String name);
}
package com.bw.rikao_6_29.mvp.view.fg;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import com.bw.rikao_6_29.R;
import com.bw.rikao_6_29.mvp.view.MyView;
public class BlankFragmentB extends Fragment {
private MyView my;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View inflate = inflater.inflate(R.layout.fragment_blank_b, container, false);
my = (MyView)inflate. findViewById(R.id.my);
my.star(10);
return inflate;
}
}
package com.bw.rikao_6_29.mvp.view.fg;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.StaggeredGridLayoutManager;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.Toast;
import com.alibaba.android.arouter.launcher.ARouter;
import com.bw.mylibrary.view.BaseFragment;
import com.bw.rikao_6_29.R;
import com.bw.rikao_6_29.adapter.ShiPinAdapter;
import com.bw.rikao_6_29.entiy.ShiPinEnity;
import com.bw.rikao_6_29.mvp.presenter.ICon;
import com.bw.rikao_6_29.mvp.presenter.ShiPinPresenter;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.listener.OnItemClickListener;
import com.scwang.smart.refresh.layout.SmartRefreshLayout;
import com.scwang.smart.refresh.layout.api.RefreshLayout;
import com.scwang.smart.refresh.layout.listener.OnRefreshLoadMoreListener;
import java.util.ArrayList;
import java.util.List;
public class BlankFragmentA extends BaseFragment<ICon.V, ShiPinPresenter>implements ICon.V {
private EditText ed;
private SmartRefreshLayout sm;
private RecyclerView rec;
private ShiPinAdapter shiPinAdapter;
private List<ShiPinEnity.DataDTO>listShpin=new ArrayList<>();
private int page=1;
@Override
public void getViewShiPinChang(ShiPinEnity shiPinEnity) {
listShpin.addAll(shiPinEnity.getData());
shiPinAdapter.notifyDataSetChanged();
}
@Override
public void getViewShiPinShiBai() {
Toast.makeText(getActivity(), "错误", Toast.LENGTH_SHORT).show();
}
@Override
public void getViewShiPinChangName(ShiPinEnity shiPinEnity) {
listShpin.clear();
if(shiPinEnity.getData()!=null){
listShpin.addAll(shiPinEnity.getData());
}
shiPinAdapter.notifyDataSetChanged();
}
@Override
public void getViewShiPinShiBaiName() {
Toast.makeText(getActivity(), "查无此结果", Toast.LENGTH_SHORT).show();
}
@Override
protected void intiView() {
ed = (EditText)view. findViewById(R.id.ed);
sm = (SmartRefreshLayout)view. findViewById(R.id.sm);
rec = (RecyclerView)view. findViewById(R.id.rec);
rec.setLayoutManager(new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL));
shiPinAdapter=new ShiPinAdapter(R.layout.item,listShpin,getActivity());
rec.setAdapter(shiPinAdapter);
ed.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
String names = ed.getText().toString();
presenter.getViewShiPinNmae(names);
}
@Override
public void afterTextChanged(Editable editable) {
}
});
sm.setOnRefreshLoadMoreListener(new OnRefreshLoadMoreListener() {
@Override
public void onLoadMore(@NonNull RefreshLayout refreshLayout) {
page++;
presenter.getViewShiPin(page);
sm.finishLoadMore();
}
@Override
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
page=1;
listShpin.clear();
presenter.getViewShiPin(page);
sm.finishRefresh();
}
});
shiPinAdapter.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(@NonNull BaseQuickAdapter adapter, @NonNull View view, int position) {
ARouter.getInstance().build("/app/MainActivity3")
.withString("name",listShpin.get(position).getAuthname())
.withString("zhao",listShpin.get(position).getHeadpath())
.navigation();
}
});
}
@Override
protected void intiData() {
presenter=new ShiPinPresenter();
presenter.getViewShiPin(page);
}
@Override
protected int bingLayou() {
return R.layout.fragment_blank_a;
}
}
package com.bw.rikao_6_29.mvp.view;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.ValueAnimator;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
public class MyView extends View {
private Paint paint;
private int progress;
private String timeString;
public MyView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
intiPaint();
}
private void intiPaint() {
paint=new Paint();//初始化
paint.setColor(Color.RED);//颜色
paint.setStrokeWidth(5);//宽度
paint.setAntiAlias(true);//抗锯齿
paint.setStyle(Paint.Style.STROKE);//空心
paint.setTextSize(25);//文字大小
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
RectF rectF=new RectF(10,10,110,110);//创建圆圈的位置角度
canvas.drawArc(rectF,270,progress,false,paint);//创建圆圈位置角度记录画笔
canvas.drawText(timeString,50,56,paint);//字体的记录位置笔
}
public void star(int time){//外部接口
ValueAnimator valueAnimator=ValueAnimator.ofInt(0,360);//圆的一圈从0到360
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(@NonNull ValueAnimator valueAnimator) {
progress= (int) valueAnimator.getAnimatedValue();//开始画圆
invalidate();
}
});
valueAnimator.setDuration(time*1000);//时间
valueAnimator.start();//开始
ValueAnimator valueAnimatorText=ValueAnimator.ofInt(time,0);
valueAnimatorText.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(@NonNull ValueAnimator valueAnimator) {
timeString=String.valueOf((int) valueAnimator.getAnimatedValue());
}
});
valueAnimatorText.setDuration(time*1000);
valueAnimatorText.start();
valueAnimator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
Log.i("aaa", "onAnimationEnd: "+"动画结束");
}
});
}
}
package com.bw.rikao_6_29.mvp.view;
import androidx.appcompat.app.AppCompatActivity;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.os.Bundle;
import android.view.View;
import android.view.animation.CycleInterpolator;
import android.widget.ImageView;
import android.widget.TextView;
import com.alibaba.android.arouter.facade.annotation.Autowired;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.android.arouter.launcher.ARouter;
import com.bumptech.glide.load.model.GlideUrl;
import com.bw.rikao_6_29.GongJu.GuldeUrl;
import com.bw.rikao_6_29.R;
@Route(path = "/app/MainActivity3")
public class MainActivity3 extends AppCompatActivity {
@Autowired
String name;
@Autowired
String zhao;
private ImageView zhaoxiang;
private TextView nameText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main3);
zhaoxiang = (ImageView) findViewById(R.id.zhaoxiang);
nameText = (TextView) findViewById(R.id.nameText);
ARouter.getInstance().inject(this);
GuldeUrl.getGuldeUrl().GlideString(zhao,this,zhaoxiang);
nameText.setText(name);
zhaoxiang.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ObjectAnimator alpha=ObjectAnimator.ofFloat(zhaoxiang,"alpha",1,0,1);
ObjectAnimator scaleX=ObjectAnimator.ofFloat(zhaoxiang,"scaleX",1,2,1);
ObjectAnimator rotation=ObjectAnimator.ofFloat(zhaoxiang,"rotation",0,360,0);
AnimatorSet set=new AnimatorSet();
set.play(alpha).with(scaleX).before(rotation);
set.setDuration(1000);
set.start();
}
});
}
}
package com.bw.rikao_6_29.mvp.view;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;
import android.content.Context;
import android.os.Bundle;
import android.view.Gravity;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.model.GlideUrl;
import com.bw.rikao_6_29.GongJu.GongChang;
import com.bw.rikao_6_29.GongJu.GuldeUrl;
import com.bw.rikao_6_29.GongJu.TablVip;
import com.bw.rikao_6_29.R;
import com.google.android.material.navigation.NavigationView;
import com.google.android.material.tabs.TabLayout;
import com.youth.banner.Banner;
import com.youth.banner.loader.ImageLoader;
import java.util.ArrayList;
import java.util.List;
@Route(path = "/app/MainActivity2")
public class MainActivity2 extends AppCompatActivity {
private DrawerLayout dr;
private Button bu1;
private Banner ban;
private List<Integer> listban=new ArrayList<Integer>();
private TabLayout tabl;
private ViewPager vip;
private NavigationView nav;
private TablVip tablVip;
private List<String>listtabl=new ArrayList<>();
private List<Fragment>listvip=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
dr = (DrawerLayout) findViewById(R.id.dr);
bu1 = (Button) findViewById(R.id.bu1);
ban = (Banner) findViewById(R.id.ban);
tabl = (TabLayout) findViewById(R.id.tabl);
vip = (ViewPager) findViewById(R.id.vip);
nav = (NavigationView) findViewById(R.id.nav);
View headerView = nav.getHeaderView(0);
TextView name=headerView.findViewById(R.id.textView);
name.setText("郑昊林");
bu1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dr.openDrawer(Gravity.LEFT);
}
});
nav.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()){
case R.id.nu1:
vip.setCurrentItem(0);
dr.closeDrawer(Gravity.LEFT);
break;
case R.id.nu2:
vip.setCurrentItem(1);
dr.closeDrawer(Gravity.LEFT);
break;
case R.id.nu3:
vip.setCurrentItem(2);
dr.closeDrawer(Gravity.LEFT);
break;
}
return false;
}
});
listtabl.add("主页");
listtabl.add("分享");
listtabl.add("展示");
listvip.add(GongChang.serc(GongChang.H_A));
listvip.add(GongChang.serc(GongChang.H_B));
listvip.add(GongChang.serc(GongChang.H_C));
tablVip=new TablVip(getSupportFragmentManager(),listtabl,listvip);
vip.setAdapter(tablVip);
tabl.setupWithViewPager(vip);
listban.add(R.drawable.a);
listban.add(R.drawable.b);
listban.add(R.drawable.c);
listban.add(R.drawable.d);
listban.add(R.drawable.e);
listban.add(R.drawable.f);
listban.add(R.drawable.g);
ban.setImages(listban);
ban.setImageLoader(new ImageLoader() {
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
Glide.with(context).load(path).into(imageView);
}
});
ban.start();
}
}
package com.bw.rikao_6_29.mvp.view;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import android.content.DialogInterface;
import android.content.Intent;
import android.hardware.biometrics.BiometricPrompt;
import android.hardware.fingerprint.FingerprintManager;
import android.os.Build;
import android.os.Bundle;
import android.os.CancellationSignal;
import android.widget.EditText;
import android.widget.Toast;
import com.alibaba.android.arouter.launcher.ARouter;
import com.bw.rikao_6_29.R;
import com.bw.rikao_6_29.mvp.presenter.ICon;
import java.util.concurrent.Executor;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FingerprintManager fingerprintManager= (FingerprintManager) getSystemService(FINGERPRINT_SERVICE);
if(!fingerprintManager.isHardwareDetected()){
Toast.makeText(this, "没有指纹设备", Toast.LENGTH_SHORT).show();
ARouter.getInstance().build("/app/MainActivity2")
.navigation();
}
if(!fingerprintManager.hasEnrolledFingerprints()){
Toast.makeText(this, "没有指纹", Toast.LENGTH_SHORT).show();
}
Executor executor= ContextCompat.getMainExecutor(this);
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.P){
BiometricPrompt biometricPrompt=new BiometricPrompt.Builder(this)
.setTitle("是否开始")
.setNegativeButton("取消", executor, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(MainActivity.this, "取消开始", Toast.LENGTH_SHORT).show();
finish();
}
})
.build();
biometricPrompt.authenticate(new CancellationSignal(), executor,
new BiometricPrompt.AuthenticationCallback() {
@Override
public void onAuthenticationError(int errorCode, CharSequence errString) {
super.onAuthenticationError(errorCode, errString);
Toast.makeText(MainActivity.this, "开锁失败", Toast.LENGTH_SHORT).show();
}
@Override
public void onAuthenticationSucceeded(BiometricPrompt.AuthenticationResult result) {
super.onAuthenticationSucceeded(result);
Toast.makeText(MainActivity.this, "成功", Toast.LENGTH_SHORT).show();
ARouter.getInstance().build("/app/MainActivity2")
.navigation();
}
});
}
}
}
package com.bw.rikao_6_29.mvp.presenter;
import com.bw.mylibrary.presenter.BasePresentr;
import com.bw.rikao_6_29.entiy.ShiPinEnity;
import com.bw.rikao_6_29.mvp.model.ShiPinModel;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
public class ShiPinPresenter extends BasePresentr<ICon.V>implements ICon.P {
protected ShiPinModel shiPinModel=new ShiPinModel();
@Override
public void getViewShiPin(int page) {
shiPinModel.ShiPingetList(page)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<ShiPinEnity>() {
@Override
public void onSubscribe(Disposable d) {
disposable.add(d);
}
@Override
public void onNext(ShiPinEnity shiPinEnity) {
if(Pan()){
getview().getViewShiPinChang(shiPinEnity);
}
}
@Override
public void onError(Throwable e) {
getview().getViewShiPinShiBai();
}
@Override
public void onComplete() {
}
});
}
@Override
public void getViewShiPinNmae(String name) {
shiPinModel.ShiPingetName(name)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<ShiPinEnity>() {
@Override
public void onSubscribe(Disposable d) {
disposable.add(d);
}
@Override
public void onNext(ShiPinEnity shiPinEnity) {
if(Pan()){
getview().getViewShiPinChangName(shiPinEnity);
}
}
@Override
public void onError(Throwable e) {
getview().getViewShiPinShiBaiName();
}
@Override
public void onComplete() {
}
});
}
}
package com.bw.rikao_6_29.mvp.presenter;
import com.bw.rikao_6_29.entiy.ShiPinEnity;
import io.reactivex.Observable;
public interface ICon {
interface M{
Observable<ShiPinEnity>ShiPingetList(int page);
Observable<ShiPinEnity>ShiPingetName(String name);
}
interface P{
void getViewShiPin(int page);
void getViewShiPinNmae(String name);
}
interface V{
void getViewShiPinChang(ShiPinEnity shiPinEnity);
void getViewShiPinShiBai();
void getViewShiPinChangName(ShiPinEnity shiPinEnity);
void getViewShiPinShiBaiName();
}
}
package com.bw.rikao_6_29.mvp.model;
import com.bw.rikao_6_29.entiy.ShiPinEnity;
import com.bw.rikao_6_29.mvp.presenter.ICon;
import io.reactivex.Observable;
public class ShiPinModel extends BaseModel implements ICon.M {
@Override
public Observable<ShiPinEnity> ShiPingetList(int page) {
return pis.ShiPinList(page);
}
@Override
public Observable<ShiPinEnity> ShiPingetName(String name) {
return pis.ShiPinName(name);
}
}
package com.bw.rikao_6_29.mvp.model;
import com.bw.rikao_6_29.ten.APis;
import com.bw.rikao_6_29.ten.OkHttp;
public class BaseModel {
protected APis pis;
public BaseModel(){
pis= OkHttp.getOkHttp()
.getRetrofit()
.create(APis.class);
}
}
package com.bw.rikao_6_29.GongJu;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import java.util.List;
public class TablVip extends FragmentPagerAdapter {
private List<String>listtabl;
private List<Fragment>listvip;
public TablVip(@NonNull FragmentManager fm, List<String> listtabl, List<Fragment> listvip) {
super(fm);
this.listtabl = listtabl;
this.listvip = listvip;
}
@NonNull
@Override
public Fragment getItem(int position) {
return listvip.get(position);
}
@Override
public int getCount() {
return listvip.size();
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return listtabl.get(position);
}
}
package com.bw.rikao_6_29.GongJu;
import android.content.Context;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.android.arouter.facade.service.SerializationService;
import com.google.gson.Gson;
import java.lang.reflect.Type;
@Route(path = "/service/json")
public class JsonServiceImpl implements SerializationService {
private Gson mGson;
@Override
public void init(Context context) {
mGson = new Gson();
}
@Override
public <T> T json2Object(String text, Class<T> clazz) {
checkJson();
return mGson.fromJson(text, clazz);
}
@Override
public String object2Json(Object instance) {
checkJson();
return mGson.toJson(instance);
}
@Override
public <T> T parseObject(String input, Type clazz) {
checkJson();
return mGson.fromJson(input, clazz);
}
public void checkJson() {
if (mGson == null) {
mGson = new Gson();
}
}
}
package com.bw.rikao_6_29.GongJu;
import android.content.Context;
import android.view.Gravity;
import android.widget.ImageView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bw.rikao_6_29.R;
public class GuldeUrl {
private GuldeUrl(){}
private static volatile GuldeUrl guldeUrl=null;
public static GuldeUrl getGuldeUrl(){
if(guldeUrl==null){
synchronized (GuldeUrl.class){
if(guldeUrl==null){
guldeUrl=new GuldeUrl();
}
}
}
return guldeUrl;
}
public void GlideString(String urlapht, Context context, ImageView imageView){
Glide.with(context)
.load(urlapht)
.error(R.drawable.ic_launcher_background)
.thumbnail(0.1f)
.placeholder(R.drawable.ic_launcher_foreground)
.skipMemoryCache(false)
.circleCrop()
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(imageView);
}
}
package com.bw.rikao_6_29.GongJu;
import android.util.SparseArray;
import androidx.fragment.app.Fragment;
import com.bw.rikao_6_29.mvp.view.fg.BlankFragmentA;
import com.bw.rikao_6_29.mvp.view.fg.BlankFragmentB;
import com.bw.rikao_6_29.mvp.view.fg.BlankFragmentC;
public class GongChang {
public static final int H_A=0;
public static final int H_B=1;
public static final int H_C=2;
private static SparseArray<Fragment>sparseArray=new SparseArray<>();
public static Fragment serc(int name){
Fragment fragment=sparseArray.get(name);
if(fragment==null){
switch (name){
case H_A:
fragment=new BlankFragmentA();
break;
case H_B:
fragment=new BlankFragmentB();
break;
case H_C:
fragment=new BlankFragmentC();
}
}
sparseArray.put(name,fragment);
return fragment;
}
}
package com.bw.rikao_6_29.adapter;
import android.content.Context;
import android.widget.ImageView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.bw.rikao_6_29.GongJu.GuldeUrl;
import com.bw.rikao_6_29.R;
import com.bw.rikao_6_29.entiy.ShiPinEnity;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import java.util.List;
public class ShiPinAdapter extends BaseQuickAdapter<ShiPinEnity.DataDTO, BaseViewHolder> {
private Context context;
public ShiPinAdapter(int layoutResId, @Nullable List<ShiPinEnity.DataDTO> data, Context context) {
super(layoutResId, data);
this.context = context;
}
@Override
protected void convert(@NonNull BaseViewHolder baseViewHolder, ShiPinEnity.DataDTO dataDTO) {
baseViewHolder.setText(R.id.textname,dataDTO.getAuthname());
ImageView imageView=baseViewHolder.getView(R.id.username);
GuldeUrl.getGuldeUrl().GlideString(dataDTO.getHeadpath(),context,imageView);
}
}