GPreviewBuilder.java 2.38 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
package com.yidianling.consultant.preview;

import android.app.Activity;
import android.content.Intent;
import android.os.Parcelable;

import androidx.fragment.app.Fragment;

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

/**
 * @author rainb
 */
public class GPreviewBuilder {

    private Activity mContext;
    private Intent intent;
    private Class className;

    private GPreviewBuilder(Activity activity) {
        mContext = activity;
        intent = new Intent();
    }

    public static GPreviewBuilder form(Activity activity) {
        return new GPreviewBuilder(activity);
    }

    public static GPreviewBuilder from(Fragment fragment) {
        return new GPreviewBuilder(fragment.getActivity());
    }

    /***
     * 设置数据源
     * @param imgUrls 数据
     *@param   <T>    你的实体类类型
     * @return GPreviewBuilder
     * **/
    public <T extends IThumbViewInfo> GPreviewBuilder setData(List<T> imgUrls) {
        intent.putParcelableArrayListExtra("imagePaths", new ArrayList<Parcelable>(imgUrls));
        return this;
    }


    /***
     * 设置默认索引
     * @param currentIndex 数据
     * @return GPreviewBuilder
     * **/
    public GPreviewBuilder setCurrentIndex(int currentIndex) {
        intent.putExtra("position", currentIndex);
        return this;
    }

    /***
     * 设置指示器类型
     * @param indicatorType 枚举
     * @return GPreviewBuilder
     * **/
    public GPreviewBuilder setType(IndicatorType indicatorType) {
        intent.putExtra("type", indicatorType);
        return this;
    }


    public void start() {
        if (className == null) {
            intent.setClass(mContext, GPreviewActivity.class);
        } else {
            intent.setClass(mContext, className);
        }
        mContext.startActivity(intent);
        mContext.overridePendingTransition(0, 0);
        intent = null;
        mContext = null;
    }

    public GPreviewBuilder setFullscreen(boolean isFullscreen) {
        intent.putExtra("isFullscreen", isFullscreen);
        return this;
    }

84 85 86 87 88 89 90 91 92 93
    public GPreviewBuilder setToUid(String toUid){
        intent.putExtra("toUid", toUid);
        return this;
    }

    public GPreviewBuilder setDoctorId(String doctorId){
        intent.putExtra("doctorId", doctorId);
        return this;
    }

94 95 96 97 98 99 100
    /***
     * 指示器类型
     * ***/
    public enum IndicatorType {
        Dot, Number
    }
}