Commit 2a114246 authored by mengcuiguang's avatar mengcuiguang

代码优化

parent 0db7d983
{"v":"5.9.6","fr":29.9700012207031,"ip":0,"op":20.0000008146167,"w":140,"h":140,"nm":"收藏-白","ddd":0,"assets":[{"id":"image_0","w":108,"h":105,"u":"images/","p":"home_cancel_collect_img_0.png","e":0},{"id":"image_1","w":108,"h":105,"u":"images/","p":"home_cancel_collect_img_1.png","e":0}],"layers":[{"ddd":0,"ind":1,"ty":2,"nm":"收藏-黄.png","cl":"png","refId":"image_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[70,70,0],"ix":2,"l":2},"a":{"a":0,"k":[54,52.5,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":2,"s":[102,102,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":4,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":6,"s":[102,102,100]},{"t":12.00000048877,"s":[0,0,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":20.0000008146167,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":2,"nm":"收藏-白.png","cl":"png","refId":"image_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[70,70,0],"ix":2,"l":2},"a":{"a":0,"k":[54,52.5,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":12,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":14,"s":[105,105,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":16,"s":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":17,"s":[102,102,100]},{"t":18.000000733155,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":20.0000008146167,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
This diff is collapsed.
{"v":"5.9.6","fr":29.9700012207031,"ip":0,"op":30.0000012219251,"w":33,"h":29,"nm":"播放动效","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"形状图层 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[29.625,20.25,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":8,"s":[29.625,26,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":23,"s":[29.625,14.537,0],"to":[0,0,0],"ti":[0,0,0]},{"t":30.0000012219251,"s":[29.625,20.25,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-13,1.438,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":0,"s":[6.5,17]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":8,"s":[6.5,6]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":23,"s":[6.5,29]},{"t":30.0000012219251,"s":[6.5,17]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":20,"ix":4},"nm":"矩形路径 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.203921571374,0.298039227724,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-13.062,15.938],"ix":2},"a":{"a":0,"k":[0,14.5],"ix":1},"s":{"a":0,"k":[104,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"矩形 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":30.0000012219251,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"形状图层 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[16.5,23.562,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":15,"s":[16.5,12.062,0],"to":[0,0,0],"ti":[0,0,0]},{"t":30.0000012219251,"s":[16.5,23.562,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-13,1.438,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":0,"s":[6.5,6]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":15,"s":[6.5,29]},{"t":30.0000012219251,"s":[6.5,6]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":20,"ix":4},"nm":"矩形路径 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.203921571374,0.298039227724,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-13.062,18.375],"ix":2},"a":{"a":0,"k":[0,14.5],"ix":1},"s":{"a":0,"k":[104,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"矩形 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":30.0000012219251,"st":0,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"形状图层 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":0,"s":[3.5,30.062,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"t":15,"s":[3.5,41.375,0],"to":[0,0,0],"ti":[0,0,0]},{"t":30.0000012219251,"s":[3.5,30.062,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-13,14.438,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":1,"k":[{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":0,"s":[6.5,29]},{"i":{"x":[0.833,0.833],"y":[0.833,0.833]},"o":{"x":[0.167,0.167],"y":[0.167,0.167]},"t":15,"s":[6.5,6]},{"t":30.0000012219251,"s":[6.5,29]}],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":20,"ix":4},"nm":"矩形路径 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.203921571374,0.298039227724,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-13.062,13.375],"ix":2},"a":{"a":0,"k":[0,14.5],"ix":1},"s":{"a":0,"k":[104,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"矩形 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":30.0000012219251,"st":0,"ct":1,"bm":0}],"markers":[]}
\ No newline at end of file
......@@ -14,6 +14,7 @@ import com.mints.wisdomclean.ad.TTGroMoreAdManagerHolder;
import com.mints.wisdomclean.common.Constant;
import com.mints.wisdomclean.manager.UmengManager;
import com.mints.wisdomclean.net.LoanService;
import com.mints.wisdomclean.net.V6Service;
import com.mints.wisdomclean.utils.AppPreferencesManager;
import com.mints.wisdomclean.utils.ForegroundOrBackground;
import com.mints.wisdomclean.utils.MateUtils;
......@@ -38,6 +39,7 @@ public class MintsApplication extends MultiDexApplication {
private static LocalBroadcastManager mLocalBroadcatManager;
private Scheduler defaultSubscribeScheduler;
private LoanService loanService;
private V6Service v6Service;
private HttpProxyCacheServer proxy = null;
public static class StaticParams {
......@@ -169,6 +171,13 @@ public class MintsApplication extends MultiDexApplication {
return loanService;
}
public V6Service getV6Service() {
if (v6Service == null) {
v6Service = V6Service.Factory.create();
}
return v6Service;
}
public Scheduler defaultSubscribeScheduler() {
if (defaultSubscribeScheduler == null) {
defaultSubscribeScheduler = Schedulers.io();
......
......@@ -16,4 +16,7 @@ public class AppConfig {
* app应用首页 0-主页 1-position 2-我
*/
public static int fragmentClickFlag = 0;
// 退出登录首页刷新
public static boolean exitLoginMainRefresh = false;
}
......@@ -4,7 +4,7 @@ object Constant {
const val GRO_MORE_ADTYPE2 = "2"
const val AD_SOURCE_GROMORE = "GROMORE"
const val PAGE_SIZE = 12
/**
* 首次弹出权限声明
......
......@@ -56,4 +56,9 @@ public class TrackManager {
}
public void saveV6Terminal() {
if (trackPresenter != null ) {
trackPresenter.saveV6Terminal();
}
}
}
......@@ -56,7 +56,7 @@ public class UserManager {
private static final String VIP_FOREVER = "VIP_FOREVER";
private static final String VIP_DATE = "VIP_DATE";
private static final String CODE_ID = "codeId";
// 匹配用户
// 匹配用户 = true
private static final String NEW_FLAG = "new_flag";
public static UserManager getInstance() {
......
......@@ -9,6 +9,12 @@ data class HotStyleListBean(
val list: List<HotStyleBean>
) : Serializable
@SuppressLint("ParcelCreator")
@Parcelize
data class HotStyleTypesListBean(
val list: List<HotStyleTypesBean>
) : Parcelable
@SuppressLint("ParcelCreator")
@Parcelize
data class HotStyleBean(
......@@ -31,4 +37,9 @@ data class HotStyleTypesBean(
var title: String = "",
var id: Int = 0,
var imageCount: Int = -1,
) : Parcelable
\ No newline at end of file
) : Parcelable
data class HotStyleMsgBean(
val images: List<HotStyleBean>,
val types: List<HotStyleTypesBean>
) : Serializable
\ No newline at end of file
......@@ -13,35 +13,28 @@ import java.util.HashMap
class HomePresenter : BasePresenter<HomeView>() {
fun getMyInfo() {
val vo = HashMap<String, Any>()
vo["os"] = "android"
fun getHomeV1Types() {
AppHttpManager.getInstance(loanApplication)
.call(loanService.getMyInfo(vo),
object : BaseSubscriber<BaseResponse<UserBean>>() {
.call(loanService.homeV1Types,
object : BaseSubscriber<BaseResponse<HotStyleTypesListBean>>() {
override fun onCompleted() {
if (isLinkView)
return
view.hideLoading()
if (isLinkView) return
}
override fun onError(e: Throwable?) {
override fun onError(e: Throwable) {
if (isLinkView) return
view.hideLoading()
view.showToast(e.message)
}
override fun onNext(baseResponse: BaseResponse<UserBean>) {
override fun onNext(baseResponse: BaseResponse<HotStyleTypesListBean>) {
if (isLinkView) return
val code: Int = baseResponse.status
val message: String = baseResponse.message
val code = baseResponse.status
val message = baseResponse.message
when (code) {
200 -> {
UserManager.getInstance().saveUserInfo(baseResponse.data)
view.getUserSuc(baseResponse.data)
view.getHomeV1MsgSuc(baseResponse.data)
}
else -> {
view.showToast(message)
......@@ -122,7 +115,7 @@ class HomePresenter : BasePresenter<HomeView>() {
if (isLinkView) return
val code = baseResponse.status
when (code) {
200 -> getMyInfo()
200 -> getHomeV1Types()
}
}
})
......
package com.mints.wisdomclean.mvp.presenters
import com.mints.wisdomclean.common.AppConfig
import com.mints.wisdomclean.manager.AppHttpManager
import com.mints.wisdomclean.mvp.model.BaseResponse
import com.mints.wisdomclean.mvp.model.HotStyleListBean
import com.mints.wisdomclean.mvp.views.PicContentView
import com.mints.library.net.neterror.BaseSubscriber
import com.mints.library.net.neterror.Throwable
class PicContentPresenter : BasePresenter<PicContentView>() {
fun getHomePageImageList(typeId: Int, page: Int, pageCount: Int) {
val vo = hashMapOf<String, Any>()
vo["typeId"] = typeId
vo["page"] = page
vo["size"] = pageCount
AppHttpManager.getInstance(loanApplication)
.call(loanService.getHomeV1List(vo),
object : BaseSubscriber<BaseResponse<HotStyleListBean>>() {
override fun onCompleted() {
if (isLinkView) return
}
override fun onError(e: Throwable) {
if (isLinkView) return
view.showToast(e.message)
view.getHomePageImageListFail()
}
override fun onNext(baseResponse: BaseResponse<HotStyleListBean>) {
if (isLinkView) return
val code = baseResponse.status
val message = baseResponse.message
when (code) {
200 -> {
view.getHomePageImageListSuc(baseResponse.data)
}
else -> {
view.showToast(message)
view.getHomePageImageListFail()
}
}
}
})
}
}
\ No newline at end of file
package com.mints.wisdomclean.mvp.presenters;
import android.content.Context;
import com.google.gson.JsonObject;
import com.mints.library.net.neterror.BaseSubscriber;
import com.mints.library.net.neterror.Throwable;
......@@ -35,6 +37,7 @@ public class TrackPresenter extends BaseTrackPresenter {
switch (baseResponse.getStatus()) {
case 200: {
UserManager.getInstance().saveUserInfo(baseResponse.getData());
saveV6Terminal();
saveTerminalInfo();
}
}
......@@ -112,5 +115,29 @@ public class TrackPresenter extends BaseTrackPresenter {
});
}
public void saveV6Terminal() {
try {
Context context = MintsApplication.getContext();
MintsApplication baseApplication = (MintsApplication) context;
AppHttpManager.getInstance(baseApplication)
.call(baseApplication.getV6Service().saveV6TerminalInfoBefore(),
new BaseSubscriber<BaseResponse<Object>>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(BaseResponse<Object> baseResponse) {
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.mints.wisdomclean.mvp.views
import com.mints.wisdomclean.mvp.model.UserBean
import com.mints.wisdomclean.mvp.model.HotStyleTypesListBean
interface HomeView : BaseView {
fun getUserSuc(data: UserBean)
fun getHomeV1MsgSuc(data: HotStyleTypesListBean)
}
package com.mints.wisdomclean.mvp.views
import com.mints.wisdomclean.mvp.model.*
interface PicContentView : BaseView {
fun getHomePageImageListSuc(data: HotStyleListBean)
fun getHomePageImageListFail()
}
......@@ -6,6 +6,9 @@ import android.text.TextUtils;
import com.google.gson.JsonObject;
import com.mints.wisdomclean.BuildConfig;
import com.mints.wisdomclean.mvp.model.BaseResponse;
import com.mints.wisdomclean.mvp.model.HotStyleListBean;
import com.mints.wisdomclean.mvp.model.HotStyleMsgBean;
import com.mints.wisdomclean.mvp.model.HotStyleTypesListBean;
import com.mints.wisdomclean.mvp.model.OrderRecordBean;
import com.mints.wisdomclean.mvp.model.UserBean;
import com.mints.wisdomclean.mvp.model.Version;
......@@ -157,6 +160,22 @@ public interface LoanService {
@POST("api/reporGromeEcpm")
Observable<BaseResponse<JsonObject>> reporGromeEcpm(@Body Map<String, Object> vo);
/**
* 首页分类
*
* @return
*/
@POST("api/ai/homeV1Types")
Observable<BaseResponse<HotStyleTypesListBean>> getHomeV1Types();
/**
* 首页列表
*
* @return
*/
@POST("api/ai/homeV1List")
Observable<BaseResponse<HotStyleListBean>> getHomeV1List(@Body Map<String, Object> vo);
/**
* 默认http工厂
......
package com.mints.wisdomclean.net;
import com.google.gson.Gson;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
import java.nio.charset.Charset;
import okhttp3.MediaType;
import okhttp3.RequestBody;
import okhttp3.ResponseBody;
import okio.Buffer;
import retrofit2.Converter;
import retrofit2.Retrofit;
/**
* v6 gson
*/
public class V6GsonConverterFactory extends Converter.Factory {
private final Gson gson;
public static V6GsonConverterFactory create() {
return create(new Gson());
}
public static V6GsonConverterFactory create(Gson gson) {
return new V6GsonConverterFactory(gson);
}
private V6GsonConverterFactory(Gson gson) {
if (gson == null) throw new NullPointerException("gson == null");
this.gson = gson;
}
@Override
public Converter<ResponseBody, ?> responseBodyConverter(Type type, Annotation[] annotations,
Retrofit retrofit) {
return new GsonResponseBodyConverter<>(gson, type);
}
@Override
public Converter<?, RequestBody> requestBodyConverter(Type type,
Annotation[] parameterAnnotations, Annotation[] methodAnnotations, Retrofit retrofit) {
return new GsonRequestBodyConverter<>(gson, type);
}
// 这里创建从ResponseBody其它类型的Converter
// 主要用于对响应体的处理
final class GsonResponseBodyConverter<T> implements Converter<ResponseBody, T> {
private final Gson gson;
private final Type type;
GsonResponseBodyConverter(Gson gson, Type type) {
this.gson = gson;
this.type = type;
}
@Override
public T convert(ResponseBody value) throws IOException {
Reader reader = value.charStream();
try {
T t = gson.fromJson(reader, type);
// loginInvalid(t);
return t;
} finally {
try {
if (reader != null)
reader.close();
} catch (IOException ignored) {
ignored.printStackTrace();
}
}
}
}
// 在这里创建 从自定类型到ResponseBody 的Converter
// 主要用于对Part、PartMap、Body注解的处理
final class GsonRequestBodyConverter<T> implements Converter<T, RequestBody> {
private final MediaType MEDIA_TYPE = MediaType.parse("application/json; charset=UTF-8");
private final Charset UTF_8 = Charset.forName("UTF-8");
private final Gson gson;
private final Type type;
GsonRequestBodyConverter(Gson gson, Type type) {
this.gson = gson;
this.type = type;
}
@Override
public RequestBody convert(T value) throws IOException {
Buffer buffer = new Buffer();
Writer writer = new OutputStreamWriter(buffer.outputStream(), UTF_8);
gson.toJson(value, type, writer);
writer.flush();
return RequestBody.create(MEDIA_TYPE, buffer.readByteString());
}
}
}
package com.mints.wisdomclean.net;
import android.content.Context;
import android.text.TextUtils;
import com.mints.library.net.neterror.BaseSubscriber;
import com.mints.library.net.neterror.Throwable;
import com.mints.wisdomclean.BuildConfig;
import com.mints.wisdomclean.MintsApplication;
import com.mints.wisdomclean.manager.AppHttpManager;
import com.mints.wisdomclean.mvp.model.BaseResponse;
import com.mints.wisdomclean.utils.AESUtils;
import com.orhanobut.logger.Logger;
import java.util.concurrent.TimeUnit;
import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
import retrofit2.http.POST;
import rx.Observable;
/**
* 描述:V6服务器交互
* 作者:孟崔广
* 时间:2023/6/1 16:14
*/
public interface V6Service {
String HYTECH_MAIN_IP = "http://api6.mints-tech.cn/camera-api/";
@POST("api/user/saveTerminalInfoBefore")
Observable<Object> saveV6TerminalInfoBefore();
class Factory {
public static V6Service create() {
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.retryOnConnectionFailure(false);
builder.connectTimeout(20, TimeUnit.SECONDS);
builder.readTimeout(20, TimeUnit.SECONDS);
builder.writeTimeout(20, TimeUnit.SECONDS);
if (BuildConfig.DEBUG) {
HttpLoggingInterceptor logging = new HttpLoggingInterceptor(message -> {
if (TextUtils.isEmpty(message)) return;
String s = message.substring(0, 1);
String request = message.substring(0, 4);
if ("{".equals(s) || "[".equals(s)) {
Logger.json(message);
} else if (request.contains("-->") || request.contains("<--")) {
Logger.d("Method" + message);
} else {
Logger.d("params:" + message);
}
});
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
builder.interceptors().add(logging);
}
OkHttpInterceptor okHttpInterceptor = new OkHttpInterceptor(AESUtils.getDefaultKey());
builder.interceptors().add(okHttpInterceptor);
Retrofit retrofit = new Retrofit.Builder()
.client(builder.build())
.baseUrl(HYTECH_MAIN_IP)
.addConverterFactory(V6GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
return retrofit.create(V6Service.class);
}
}
static void saveV6Terminal() {
try {
Context context = MintsApplication.getContext();
MintsApplication baseApplication = (MintsApplication) context;
AppHttpManager.getInstance(baseApplication)
.call(baseApplication.getV6Service().saveV6TerminalInfoBefore(),
new BaseSubscriber<BaseResponse<Object>>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(BaseResponse<Object> baseResponse) {
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
}
......@@ -11,6 +11,7 @@ import android.view.View
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentTransaction
import com.lzf.easyfloat.EasyFloat
......@@ -26,6 +27,7 @@ import com.mints.wisdomclean.ui.fragment.MyFragment
import com.mints.wisdomclean.ui.fragment.RecommendFragment
import com.mints.wisdomclean.ui.widgets.DialogListener
import com.mints.wisdomclean.ui.widgets.PhoneDialog
import kotlinx.android.synthetic.main.activity_main.*
/**
* 描述:首页
......@@ -37,9 +39,9 @@ class MainActivity : BaseActivity(), View.OnClickListener {
private var audioManager: AudioManager? = null
var contentLayout: LinearLayout? = null
var tabIvLoan: ImageView? = null
var tabIvRecommend: ImageView? = null
var tabIvMy: ImageView? = null
var tabIvLoan: TextView? = null
var tabIvRecommend: TextView? = null
var tabIvMy: TextView? = null
// 底部标签切换的Fragment
private var mainFragment: Fragment? = null
......@@ -199,6 +201,7 @@ class MainActivity : BaseActivity(), View.OnClickListener {
tabIvLoan!!.isSelected = true
tabIvRecommend!!.isSelected = false
tabIvMy!!.isSelected = false
ll_bottom_tab.background= ContextCompat.getDrawable(context, R.color.white)
}
/**
......@@ -213,6 +216,8 @@ class MainActivity : BaseActivity(), View.OnClickListener {
tabIvLoan!!.isSelected = false
tabIvRecommend!!.isSelected = true
tabIvMy!!.isSelected = false
ll_bottom_tab.background= ContextCompat.getDrawable(context, R.color.black)
}
/**
......@@ -227,6 +232,7 @@ class MainActivity : BaseActivity(), View.OnClickListener {
tabIvLoan!!.isSelected = false
tabIvRecommend!!.isSelected = false
tabIvMy!!.isSelected = true
ll_bottom_tab.background= ContextCompat.getDrawable(context, R.color.white)
}
......
......@@ -253,7 +253,7 @@ class MobileLoginActivity : BaseActivity(), LoginView, View.OnClickListener {
readyGo(MainActivity::class.java)
val activity = ActivityPageManager.getInstance().getActivity(MainActivity::class.java)
if (activity != null && activity is MainActivity) {
activity.clickTab2Layout()
activity.clickTab3Layout()
}
}
R.id.dialog_btn_right -> {
......
......@@ -20,6 +20,7 @@ import com.mints.wisdomclean.ui.widgets.DialogListener
import com.mints.wisdomclean.ui.widgets.DialogUtils
import com.mints.wisdomclean.utils.*
import com.mints.library.utils.nodoubleclick.AntiShake
import com.mints.wisdomclean.common.AppConfig
import kotlinx.android.synthetic.main.activity_settings.*
import kotlinx.android.synthetic.main.header_layout.*
import java.util.*
......@@ -42,6 +43,13 @@ class SettingsActivity : BaseActivity(), View.OnClickListener {
item_back.visibility = View.GONE
}
if (userManager.userIsLogin()) {
btn_switch.visibility = View.VISIBLE
} else {
btn_switch.visibility = View.GONE
}
}
@SuppressLint("CutPasteId")
......@@ -221,8 +229,8 @@ class SettingsActivity : BaseActivity(), View.OnClickListener {
dialog?.dismiss()
when (v?.id) {
R.id.dialog_btn_left -> {
AppConfig.exitLoginMainRefresh = true
userManager.userLogout()
finish()
// // 修复 异常999问题
......
......@@ -143,14 +143,14 @@ class SplashActivity : BaseActivity() {
* 跳转到主页面
*/
private fun goToMainActivity() {
readyGoThenKill(MainActivity::class.java)
// if (UserManager.getInstance().vipFlag) {
// readyGoThenKill(MainActivity::class.java)
// } else {
// val bundle = Bundle()
// bundle.putBoolean(VipActivity.IS_GUIDE, true)
// readyGoThenKill(VipActivity::class.java, bundle)
// }
if (UserManager.getInstance().newFlag && !UserManager.getInstance().vipFlag) {
// 匹配用户 且 不是vip
val bundle = Bundle()
bundle.putBoolean(VipActivity.IS_GUIDE, true)
readyGoThenKill(VipActivity::class.java, bundle)
} else {
readyGoThenKill(MainActivity::class.java)
}
}
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
......
......@@ -94,12 +94,13 @@ class SplashAdActivity : BaseActivity() {
* 跳转到主页面
*/
private fun goToMainActivity() {
if (UserManager.getInstance().vipFlag) {
readyGoThenKill(MainActivity::class.java)
} else {
if (UserManager.getInstance().newFlag&&!UserManager.getInstance().vipFlag) {
// 匹配用户 且 不是vip
val bundle = Bundle()
bundle.putBoolean(VipActivity.IS_GUIDE, true)
readyGoThenKill(VipActivity::class.java, bundle)
} else {
readyGoThenKill(MainActivity::class.java)
}
}
......
......@@ -5,11 +5,6 @@ import androidx.viewpager2.adapter.FragmentStateAdapter
import com.mints.wisdomclean.mvp.model.HotStyleTypesBean
import com.mints.wisdomclean.ui.fragment.MovieFragment
/**
* @author Assen
* @date 2023/4/11
* @desc
*/
class HomeVideoPageAdapter(
private val data: List<HotStyleTypesBean>,
fragment: Fragment
......@@ -19,19 +14,16 @@ class HomeVideoPageAdapter(
private val fragments = mutableMapOf<Int, Fragment>()
override fun getItemId(position: Int): Long {
// return data[position].id.toLong()
return 0
return data[position].id.toLong()
}
// override fun getItemCount() = data.size
override fun getItemCount() = 10
override fun getItemCount() = data.size
override fun createFragment(position: Int): Fragment {
val fragment = fragments[position]
if (fragment != null) return fragment
// val newFragment = MovieFragment.newInstance(data[position].id,position)
val newFragment = MovieFragment.newInstance(1,position)
val newFragment = MovieFragment.newInstance(data[position].id,position)
fragments[position] = newFragment
return newFragment
}
......
......@@ -78,7 +78,7 @@ class HotStyleAdapter(val context: Context, val dataList: ArrayList<HotStyleBean
holder.itemView.setTag(position)
}
override fun getItemCount(): Int = 30
override fun getItemCount(): Int = dataList.size
fun setOnItemClickListener(listener: OnItemClickListener) {
mOnItemClickListener = listener
......
......@@ -17,12 +17,14 @@ import com.mints.wisdomclean.common.AppConfig
import com.mints.wisdomclean.common.Constant
import com.mints.wisdomclean.manager.UserManager
import com.mints.wisdomclean.mvp.model.HotStyleTypesBean
import com.mints.wisdomclean.mvp.model.HotStyleTypesListBean
import com.mints.wisdomclean.mvp.model.UserBean
import com.mints.wisdomclean.mvp.presenters.HomePresenter
import com.mints.wisdomclean.mvp.views.HomeView
import com.mints.wisdomclean.ui.adapter.HomeVideoPageAdapter
import com.mints.wisdomclean.ui.adapter.TopAdapter
import com.mints.wisdomclean.ui.fragment.base.BaseFragment
import com.mints.wisdomclean.ui.fragment.base.LazyLoadBaseFragment
import com.mints.wisdomclean.video.VideoActivity
import com.scwang.smartrefresh.layout.api.RefreshLayout
import com.scwang.smartrefresh.layout.listener.OnRefreshListener
......@@ -39,7 +41,7 @@ import kotlin.concurrent.schedule
* 作者:孟崔广
* 时间:2023/6/29 11:30
*/
class MainFragment : BaseFragment(), HomeView, View.OnClickListener, OnRefreshListener {
class MainFragment : LazyLoadBaseFragment(), HomeView, View.OnClickListener, OnRefreshListener {
var imageUrls = listOf(
"http://static.mints-pkg.mints-id.com/pkg-bcurd/bg_main_banner23.png",
......@@ -52,7 +54,6 @@ class MainFragment : BaseFragment(), HomeView, View.OnClickListener, OnRefreshLi
private var vpAdapter: HomeVideoPageAdapter? = null
private var topAdapter: TopAdapter? = null
private val homePresenter by lazy { HomePresenter() }
private val userManager by lazy { UserManager.getInstance() }
......@@ -60,50 +61,38 @@ class MainFragment : BaseFragment(), HomeView, View.OnClickListener, OnRefreshLi
override fun initViewsAndEvents() {
homePresenter.attachView(this)
}
override fun onFragmentFirstVisible() {
initView()
initVp()
initListener()
loadData()
}
override fun onHiddenChanged(hidden: Boolean) {
if (hidden) { // 不在最前端界面显示
onPause()
} else { // 重新显示到最前端中
onResume()
}
super.onHiddenChanged(hidden)
}
override fun onDestroy() {
super.onDestroy()
homePresenter.detachView()
}
override fun onResume() {
super.onResume()
override fun onFragmentResume() {
if (AppConfig.fragmentClickFlag == Constant.FRAGMENT_CLICK_ONE) {
if (AntiShake.check(banner?.id)) return
if (!TextUtils.isEmpty(userManager.userID)) {
homePresenter.getMyInfo()
if (AppConfig.exitLoginMainRefresh) {
AppConfig.exitLoginMainRefresh = false
loadData()
}
banner?.start()
setWatchingStatus(Any())
}
}
override fun onPause() {
super.onPause()
override fun onFragmentPause() {
banner?.stop()
}
private fun initView() {
srlMainPage.setOnRefreshListener(this)
val bannerLayout1 = (banner as Banner<String, BannerImageAdapter<String>>)
bannerLayout1.apply {
addBannerLifecycleObserver(activity)
......@@ -127,11 +116,10 @@ class MainFragment : BaseFragment(), HomeView, View.OnClickListener, OnRefreshLi
}
}
}
initVp()
}
private fun initListener() {
srlMainPage.setOnRefreshListener(this)
tv_test.setOnClickListener(this)
iv_main_watching_close.setOnClickListener(this)
tv_main_watching_goto.setOnClickListener(this)
......@@ -157,15 +145,14 @@ class MainFragment : BaseFragment(), HomeView, View.OnClickListener, OnRefreshLi
private fun loadData() {
Timer().schedule(200) {
requireActivity().runOnUiThread {
// if (AntiShake.check(iv_main_grid3?.id)) return@runOnUiThread
if (AntiShake.check(rv_main_list?.id)) return@runOnUiThread
if (!TextUtils.isEmpty(userManager?.userID)) {
// TrackManager.getInstance().riskinfo()
} else {
if (TextUtils.isEmpty(userManager?.userID)) {
//获取游客登录数据
homePresenter.userLogin()
} else {
homePresenter.getHomeV1Types()
}
}
}
}
......@@ -188,8 +175,9 @@ class MainFragment : BaseFragment(), HomeView, View.OnClickListener, OnRefreshLi
TabLayoutMediator(tablayout, vp2) { tab, position ->
// 初始化Tab
tab.id = position
tab.customView = getTabView("123")
// tab.customView = getTabView(tabsData[position].title)
if (tabsData.size > 0) {
tab.customView = getTabView(tabsData[position].title)
}
}.attach()
tablayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
override fun onTabSelected(tab: TabLayout.Tab?) {
......@@ -212,16 +200,14 @@ class MainFragment : BaseFragment(), HomeView, View.OnClickListener, OnRefreshLi
val text = it.findViewById<TextView>(R.id.item_tv)
if (isSelected) {
text.setTextColor(ContextCompat.getColor(requireContext(), R.color.red))
// text.setBackgroundResource(R.drawable.shape_bg_home_selected)
} else {
text.setTextColor(ContextCompat.getColor(requireContext(), R.color.color_8D8F90))
// text.setBackgroundResource(R.drawable.shape_bg_home_unselected)
}
}
}
private fun getTabView(text: String): View {
val view = LayoutInflater.from(requireContext()).inflate(R.layout.item_recommend_tab, null)
val view = LayoutInflater.from(requireContext()).inflate(R.layout.item_video_tab, null)
view.findViewById<TextView>(R.id.item_tv).text = text
return view
}
......@@ -238,10 +224,6 @@ class MainFragment : BaseFragment(), HomeView, View.OnClickListener, OnRefreshLi
}
}
override fun getUserSuc(data: UserBean) {
}
fun setWatchingStatus(bean: Any) {
GlideUtils.loadImageViewGifForFitCenter(
requireContext(),
......@@ -252,4 +234,13 @@ class MainFragment : BaseFragment(), HomeView, View.OnClickListener, OnRefreshLi
// tv_main_watching_text1.text=""
// tv_main_watching_text2.text=""
}
override fun getHomeV1MsgSuc(data: HotStyleTypesListBean) {
tabsData.clear()
tabsData.addAll(data.list)
if (tabsData.isNotEmpty()) {
mSelectTabIndex = 0
vpAdapter?.notifyDataSetChanged()
}
}
}
\ No newline at end of file
......@@ -5,7 +5,10 @@ import android.view.View
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.GridLayoutManager
import com.mints.wisdomclean.R
import com.mints.wisdomclean.common.Constant
import com.mints.wisdomclean.mvp.model.*
import com.mints.wisdomclean.mvp.presenters.PicContentPresenter
import com.mints.wisdomclean.mvp.views.PicContentView
import com.mints.wisdomclean.ui.adapter.HotStyleAdapter
import com.mints.wisdomclean.ui.adapter.base.OnItemClickListener
import com.mints.wisdomclean.ui.fragment.base.LazyLoadBaseFragment
......@@ -14,8 +17,7 @@ import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener
import kotlinx.android.synthetic.main.fragment_movie.*
import java.util.*
//class PicContentFragment : LazyLoadBaseFragment(), PicContentView, OnLoadMoreListener {
class MovieFragment : LazyLoadBaseFragment(), OnLoadMoreListener {
class MovieFragment : LazyLoadBaseFragment(), PicContentView, OnLoadMoreListener {
private var mType = 0
private var mPosition = 0 // 首页-第一个tab-第一个recyclerview Item
......@@ -34,7 +36,7 @@ class MovieFragment : LazyLoadBaseFragment(), OnLoadMoreListener {
}
}
// private val picContentPresenter by lazy { PicContentPresenter() }
private val picContentPresenter by lazy { PicContentPresenter() }
private var hotPage = 1 // 分页
private val hotList: ArrayList<HotStyleBean> = arrayListOf()
......@@ -52,7 +54,7 @@ class MovieFragment : LazyLoadBaseFragment(), OnLoadMoreListener {
override fun onFragmentFirstVisible() {
super.onFragmentFirstVisible()
// picContentPresenter.attachView(this)
picContentPresenter.attachView(this)
initView()
initListener()
......@@ -71,45 +73,45 @@ class MovieFragment : LazyLoadBaseFragment(), OnLoadMoreListener {
override fun onDestroy() {
super.onDestroy()
// picContentPresenter.detachView()
picContentPresenter.detachView()
}
fun onRefresh() {
hotPage = 1
hotList.clear()
srlMainPage.resetNoMoreData()
// picContentPresenter.getHomePageImageList(mType, hotPage, Constant.PAGE_SIZE)
picContentPresenter.getHomePageImageList(mType, hotPage, Constant.PAGE_SIZE)
}
override fun onLoadMore(refreshLayout: RefreshLayout) {
hotPage = ++hotPage
// picContentPresenter.getHomePageImageList(mType, hotPage, Constant.PAGE_SIZE)
picContentPresenter.getHomePageImageList(mType, hotPage, Constant.PAGE_SIZE)
}
// override fun getHomePageImageListSuc(data: HotStyleListBean) {
// if (activity == null || requireActivity().isFinishing) {
// srlMainPage?.finishRefresh(true)
// return
// }
//
// if (::hotStyleAdapter.isInitialized) {
// hotList.addAll(data.list)
// if (hotPage == 1) {
// srlMainPage.finishRefresh(true)
// hotStyleAdapter.notifyDataSetChanged()
// } else {
// if (data.list.size < Constant.PAGE_SIZE) {
// srlMainPage.finishLoadMoreWithNoMoreData()
// } else {
// srlMainPage.finishLoadMore()
// }
// hotStyleAdapter.notifyItemChanged(data.list.size)
// }
// }
// }
//
// override fun getHomePageImageListFail() {
// }
override fun getHomePageImageListSuc(data: HotStyleListBean) {
if (activity == null || requireActivity().isFinishing) {
srlMainPage?.finishRefresh(true)
return
}
if (::hotStyleAdapter.isInitialized) {
hotList.addAll(data.list)
if (hotPage == 1) {
srlMainPage.finishRefresh(true)
hotStyleAdapter.notifyDataSetChanged()
} else {
if (data.list.size < Constant.PAGE_SIZE) {
srlMainPage.finishLoadMoreWithNoMoreData()
} else {
srlMainPage.finishLoadMore()
}
hotStyleAdapter.notifyItemChanged(data.list.size)
}
}
}
override fun getHomePageImageListFail() {
}
private fun initView() {
val gridLayoutManager = GridLayoutManager(context, 3)
......@@ -131,10 +133,4 @@ class MovieFragment : LazyLoadBaseFragment(), OnLoadMoreListener {
srlMainPage.setOnLoadMoreListener(this)
}
fun getFirstItemView(): View? {
rv_pic_list.layoutManager?.run {
return findViewByPosition(0)
}
return null
}
}
\ No newline at end of file
......@@ -84,7 +84,6 @@ class MyFragment : BaseFragment(), MyView, View.OnClickListener {
if (fl_my_vip != null && fl_my_vip.visibility == View.VISIBLE) {
rope?.stop()
}
// marqueeView?.stopFlipping()
}
override fun onClick(v: View?) {
......
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/black" android:state_selected="true" />
<item android:color="@color/graya" android:state_selected="false" />
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/white" android:state_selected="true" />
<item android:color="@color/graya" android:state_selected="false" />
</selector>
\ No newline at end of file
......@@ -31,49 +31,55 @@
<LinearLayout
android:id="@+id/tab_rl_loan"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:gravity="center"
android:orientation="vertical">
<ImageView
<TextView
android:id="@+id/tab_iv_loan"
android:layout_width="30dp"
android:layout_height="30dp"
android:contentDescription="@null"
android:src="@drawable/home_tab_home_selector" />
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="剧场"
android:textColor="@drawable/item_text_sel"
android:textSize="16sp"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:id="@+id/tab_rl_recommend"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:gravity="center"
android:orientation="vertical">
<ImageView
<TextView
android:id="@+id/tab_iv_recommend"
android:layout_width="30dp"
android:layout_height="30dp"
android:contentDescription="@null"
android:src="@drawable/home_tab_home_selector" />
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="推荐"
android:textColor="@drawable/item_text_sel2"
android:textSize="16sp"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:id="@+id/tab_rl_my"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1.0"
android:gravity="center"
android:orientation="vertical">
<ImageView
<TextView
android:id="@+id/tab_iv_my"
android:layout_width="30dp"
android:layout_height="30dp"
android:contentDescription="@null"
android:src="@drawable/home_tab_my_selector" />
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="我的"
android:textColor="@drawable/item_text_sel"
android:textSize="16sp"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>
......
......@@ -40,7 +40,7 @@ WEIXIN_APP_ID =wx6830d86ba20be254
WEIXIN_APP_SECRET =91f91c0721bd989cf8b9c9b8dc8a5e9c
#umeng
RELEASE_UMENG_KEY=63c0fd97d64e68613917170f
RELEASE_UMENG_KEY=64a67d4fa1a164591b44f0e8
GROMORE_APP_ID="5404192"
GROMORE_SPLASH_CODE="102371299"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment