Przeglądaj źródła

导入新的开发框架mvp+dagger2+retrofit2+rxjava

liujiangyao 8 lat temu
rodzic
commit
b37595aa60
33 zmienionych plików z 1021 dodań i 2 usunięć
  1. 1 1
      .idea/modules.xml
  2. 23 0
      app/build.gradle
  3. 1 0
      app/src/main/AndroidManifest.xml
  4. 12 0
      app/src/main/java/com/sheep/gamegroup/di/components/ApplicationComponent.java
  5. 22 0
      app/src/main/java/com/sheep/gamegroup/di/components/NetComponent.java
  6. 16 0
      app/src/main/java/com/sheep/gamegroup/di/components/SplashComponent.java
  7. 26 0
      app/src/main/java/com/sheep/gamegroup/di/modules/ApplicationModule.java
  8. 56 0
      app/src/main/java/com/sheep/gamegroup/di/modules/NetModule.java
  9. 24 0
      app/src/main/java/com/sheep/gamegroup/di/modules/SplashModule.java
  10. 10 0
      app/src/main/java/com/sheep/gamegroup/di/scopes/DBScope.java
  11. 10 0
      app/src/main/java/com/sheep/gamegroup/di/scopes/UserScope.java
  12. 18 0
      app/src/main/java/com/sheep/gamegroup/model/api/ApiClient.java
  13. 24 0
      app/src/main/java/com/sheep/gamegroup/model/api/ApiService.java
  14. 17 0
      app/src/main/java/com/sheep/gamegroup/model/api/StringConverter.java
  15. 27 0
      app/src/main/java/com/sheep/gamegroup/model/api/StringConverterFactory.java
  16. 27 0
      app/src/main/java/com/sheep/gamegroup/model/util/DateTimeTypeAdapter.java
  17. 16 0
      app/src/main/java/com/sheep/gamegroup/model/util/EntityUtils.java
  18. 27 0
      app/src/main/java/com/sheep/gamegroup/model/util/HttpUtils.java
  19. 14 0
      app/src/main/java/com/sheep/gamegroup/presenter/SplashContract.java
  20. 20 0
      app/src/main/java/com/sheep/gamegroup/presenter/SplashPresenter.java
  21. 87 0
      app/src/main/java/com/sheep/gamegroup/util/AppUtil.java
  22. 59 0
      app/src/main/java/com/sheep/gamegroup/util/FileUtil.java
  23. 25 0
      app/src/main/java/com/sheep/gamegroup/util/GlideConfiguration.java
  24. 67 0
      app/src/main/java/com/sheep/gamegroup/util/NetUtil.java
  25. 51 0
      app/src/main/java/com/sheep/gamegroup/util/OkHttpImageDownloader.java
  26. 94 0
      app/src/main/java/com/sheep/gamegroup/util/PreferenceUtils.java
  27. 50 0
      app/src/main/java/com/sheep/gamegroup/util/TimeUtil.java
  28. 29 0
      app/src/main/java/com/sheep/gamegroup/util/TimeUtils.java
  29. 48 0
      app/src/main/java/com/sheep/gamegroup/view/activity/LoginAct.java
  30. 94 0
      app/src/main/java/com/sheep/gamegroup/view/activity/SplashAct.java
  31. 0 1
      app/src/main/java/com/sheep/jiuyan/samllsheep/floatwindow/ShotScreen.java
  32. 24 0
      app/src/main/res/layout/login_act_layout.xml
  33. 2 0
      build.gradle

+ 1 - 1
.idea/modules.xml

@@ -2,8 +2,8 @@
 <project version="4">
   <component name="ProjectModuleManager">
     <modules>
-      <module fileurl="file://$PROJECT_DIR$/SamllSheepPlugin.iml" filepath="$PROJECT_DIR$/SamllSheepPlugin.iml" />
       <module fileurl="file://D:/Dlg/AndroidStudioProjects/small_sheep_android/SamllSheepPlugin.iml" filepath="D:/Dlg/AndroidStudioProjects/small_sheep_android/SamllSheepPlugin.iml" />
+      <module fileurl="file://$PROJECT_DIR$/SamllSheepPlugin.iml" filepath="$PROJECT_DIR$/SamllSheepPlugin.iml" />
       <module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />
       <module fileurl="file://$PROJECT_DIR$/small_sheep_android.iml" filepath="$PROJECT_DIR$/small_sheep_android.iml" />
     </modules>

+ 23 - 0
app/build.gradle

@@ -1,4 +1,5 @@
 apply plugin: 'com.android.application'
+apply plugin: 'com.jakewharton.butterknife'
 
 
 android {
@@ -74,4 +75,26 @@ dependencies {
     compile 'cn.yipianfengye.android:zxing-library:2.2'
     compile 'com.github.huburt-Hu:NewbieGuide:v1.2.0'
 
+    //butterknife
+    compile 'com.jakewharton:butterknife:+'
+    annotationProcessor 'com.jakewharton:butterknife-compiler:+'
+    //dragger2
+    compile 'com.google.dagger:dagger:+'
+    compile 'com.google.dagger:dagger-compiler:+'
+    provided 'org.glassfish:javax.annotation:+'
+    //retrofit
+    compile 'com.squareup.retrofit2:retrofit:+'
+    compile 'com.squareup.retrofit2:converter-gson:+'
+    compile 'com.squareup.okhttp3:logging-interceptor:+'
+//    compile 'com.squareup.retrofit2:adapter-rxjava2:+'
+    compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
+    //rxjava
+    compile 'io.reactivex.rxjava2:rxandroid:+'
+    compile 'io.reactivex.rxjava2:rxjava:+'
+    //获取动态权限三方库
+    compile 'pub.devrel:easypermissions:+'
+
+    compile 'net.danlew:android.joda:2.9.3'
+    compile 'com.orhanobut:logger:1.15'
+
 }

+ 1 - 0
app/src/main/AndroidManifest.xml

@@ -178,6 +178,7 @@
                 <category android:name="android.intent.category.LAUNCHER"/>
             </intent-filter>
         </activity>
+        <activity android:name="com.sheep.gamegroup.view.activity.SplashAct" />
 
         <service android:name=".service.TopService"
                  android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"

+ 12 - 0
app/src/main/java/com/sheep/gamegroup/di/components/ApplicationComponent.java

@@ -0,0 +1,12 @@
+package com.sheep.gamegroup.di.components;
+
+import com.sheep.gamegroup.di.modules.ApplicationModule;
+
+import dagger.Component;
+
+/**
+ * Created by ljy on 2018/3/8.
+ */
+@Component(modules = ApplicationModule.class)
+public interface ApplicationComponent {
+}

+ 22 - 0
app/src/main/java/com/sheep/gamegroup/di/components/NetComponent.java

@@ -0,0 +1,22 @@
+package com.sheep.gamegroup.di.components;
+
+
+import com.sheep.gamegroup.di.modules.NetModule;
+import com.sheep.gamegroup.model.api.ApiService;
+
+import javax.inject.Singleton;
+
+import dagger.Component;
+import okhttp3.OkHttpClient;
+import retrofit2.Retrofit;
+
+/**
+ * Created by ljy on 2018/3/8.
+ */
+@Component(modules = NetModule.class)
+@Singleton
+public interface NetComponent {
+    ApiService getApiService();
+    OkHttpClient getOkHttp();
+    Retrofit getRetrofit();
+}

+ 16 - 0
app/src/main/java/com/sheep/gamegroup/di/components/SplashComponent.java

@@ -0,0 +1,16 @@
+package com.sheep.gamegroup.di.components;
+
+import com.sheep.gamegroup.di.modules.SplashModule;
+import com.sheep.gamegroup.di.scopes.UserScope;
+import com.sheep.gamegroup.view.activity.SplashAct;
+
+import dagger.Component;
+
+/**
+ * Created by ljy on 2018/3/9.
+ */
+@UserScope
+@Component(modules = SplashModule.class, dependencies = NetComponent.class)
+public interface SplashComponent {
+    void inject(SplashAct splashAct);
+}

+ 26 - 0
app/src/main/java/com/sheep/gamegroup/di/modules/ApplicationModule.java

@@ -0,0 +1,26 @@
+package com.sheep.gamegroup.di.modules;
+
+import android.content.Context;
+
+import javax.inject.Singleton;
+
+import dagger.Module;
+import dagger.Provides;
+
+/**
+ * Created by ljy on 2018/3/8.
+ */
+@Module
+public class ApplicationModule {
+    private Context context;
+
+    public ApplicationModule(Context context) {
+        this.context = context;
+    }
+
+    @Provides
+    @Singleton
+    public Context providerContext(){
+        return context;
+    }
+}

+ 56 - 0
app/src/main/java/com/sheep/gamegroup/di/modules/NetModule.java

@@ -0,0 +1,56 @@
+package com.sheep.gamegroup.di.modules;
+
+import com.sheep.gamegroup.model.api.ApiService;
+import com.sheep.gamegroup.model.api.StringConverterFactory;
+import com.sheep.gamegroup.model.util.EntityUtils;
+import com.sheep.jiuyan.samllsheep.BuildConfig;
+
+import java.util.concurrent.TimeUnit;
+
+import javax.inject.Singleton;
+
+import dagger.Module;
+import dagger.Provides;
+import okhttp3.OkHttpClient;
+import okhttp3.logging.HttpLoggingInterceptor;
+import retrofit2.Retrofit;
+import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
+import retrofit2.converter.gson.GsonConverterFactory;
+
+/**
+ * Created by ljy on 2018/3/8.
+ */
+
+@Module
+public class NetModule {
+    @Provides
+    @Singleton
+    public OkHttpClient provideOkHttpClient() {
+        HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
+        loggingInterceptor.setLevel(BuildConfig.DEBUG ? HttpLoggingInterceptor.Level.BODY : HttpLoggingInterceptor.Level.NONE);
+        OkHttpClient okhttpClient = new OkHttpClient.Builder()
+                .connectTimeout(30, TimeUnit.SECONDS)
+                .connectTimeout(20, TimeUnit.SECONDS)
+                .readTimeout(20,TimeUnit.SECONDS)
+                .addInterceptor(loggingInterceptor)
+                .build();
+        return okhttpClient;
+    }
+    @Provides
+    @Singleton
+    public Retrofit provideRetrofit(OkHttpClient okhttpClient) {
+        Retrofit retrofit = new Retrofit.Builder()
+                .client(okhttpClient)
+                .baseUrl("http://xxxx/")
+                .addConverterFactory(StringConverterFactory.create())
+                .addConverterFactory(GsonConverterFactory.create(EntityUtils.gson))//
+                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
+                .build();
+        return retrofit;
+    }
+    @Provides
+    @Singleton
+    public ApiService provideApiService(Retrofit retrofit){
+        return retrofit.create(ApiService.class);
+    }
+}

+ 24 - 0
app/src/main/java/com/sheep/gamegroup/di/modules/SplashModule.java

@@ -0,0 +1,24 @@
+package com.sheep.gamegroup.di.modules;
+
+import com.sheep.gamegroup.presenter.SplashContract;
+
+import dagger.Module;
+import dagger.Provides;
+
+/**
+ * Created by ljy on 2018/3/9.
+ */
+
+@Module
+public class SplashModule {
+
+    private SplashContract.View view;
+
+    public SplashModule(SplashContract.View view) {
+        this.view = view;
+    }
+    @Provides
+    public SplashContract.View provideView(){
+        return view;
+    }
+}

+ 10 - 0
app/src/main/java/com/sheep/gamegroup/di/scopes/DBScope.java

@@ -0,0 +1,10 @@
+package com.sheep.gamegroup.di.scopes;
+
+import javax.inject.Scope;
+
+/**
+ * Created by ljy on 2018/3/8.
+ */
+@Scope
+public @interface DBScope {
+}

+ 10 - 0
app/src/main/java/com/sheep/gamegroup/di/scopes/UserScope.java

@@ -0,0 +1,10 @@
+package com.sheep.gamegroup.di.scopes;
+
+import javax.inject.Scope;
+
+/**
+ * Created by ljy on 2018/3/8.
+ */
+@Scope
+public @interface UserScope {
+}

+ 18 - 0
app/src/main/java/com/sheep/gamegroup/model/api/ApiClient.java

@@ -0,0 +1,18 @@
+package com.sheep.gamegroup.model.api;
+
+/**
+ * Created by ljy on 2018/3/8.
+ */
+public final class ApiClient {
+    private ApiClient(){}
+//    public static final String API_BASE_URL = "http://static.owspace.com/";
+    //converters 被添加的顺序将是它们被Retrofit尝试的顺序
+//    public static final ApiService service = new Retrofit.Builder()
+//            .baseUrl(API_BASE_URL)
+//            .client(HttpUtils.client)
+//            .addConverterFactory(StringConverterFactory.create())
+//            .addConverterFactory(GsonConverterFactory.create(EntityUtils.gson))//
+//            .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
+//            .build()
+//            .create(ApiService.class);
+}

+ 24 - 0
app/src/main/java/com/sheep/gamegroup/model/api/ApiService.java

@@ -0,0 +1,24 @@
+package com.sheep.gamegroup.model.api;
+
+import java.util.Map;
+
+import io.reactivex.Observable;
+import retrofit2.Call;
+import retrofit2.http.FieldMap;
+import retrofit2.http.FormUrlEncoded;
+import retrofit2.http.GET;
+import retrofit2.http.POST;
+
+/**
+ * 暂时没接口
+ * Created by ljy on 2018/3/8.
+ */
+public interface ApiService {
+    @GET("/?app=ip.get&ip=8.8.8.8&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json")
+    Observable<Object> getRetrofitData();
+
+    //表格形式发送
+    @FormUrlEncoded
+    @POST("/")
+    Call<Object> getTimeInfoPostForm(@FieldMap Map<String, String> map);
+}

+ 17 - 0
app/src/main/java/com/sheep/gamegroup/model/api/StringConverter.java

@@ -0,0 +1,17 @@
+package com.sheep.gamegroup.model.api;
+
+import java.io.IOException;
+
+import okhttp3.ResponseBody;
+import retrofit2.Converter;
+
+/**
+ * Created by ljy on 2018/3/8.
+ */
+public class StringConverter implements Converter<ResponseBody, String> {
+
+    @Override
+    public String convert(ResponseBody value) throws IOException {
+        return value.string();
+    }
+}

+ 27 - 0
app/src/main/java/com/sheep/gamegroup/model/api/StringConverterFactory.java

@@ -0,0 +1,27 @@
+package com.sheep.gamegroup.model.api;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
+
+import okhttp3.ResponseBody;
+import retrofit2.Converter;
+import retrofit2.Retrofit;
+
+/**
+ * Created by ljy on 2018/3/8.
+ */
+public class StringConverterFactory extends Converter.Factory {
+
+    public static StringConverterFactory create(){
+        return new StringConverterFactory();
+    }
+
+    @Override
+    public Converter<ResponseBody, ?> responseBodyConverter(Type type, Annotation[] annotations, Retrofit retrofit) {
+        if (type == String.class) {
+            return new StringConverter();
+        }
+        //其它类型我们不处理,返回null就行
+        return null;
+    }
+}

+ 27 - 0
app/src/main/java/com/sheep/gamegroup/model/util/DateTimeTypeAdapter.java

@@ -0,0 +1,27 @@
+package com.sheep.gamegroup.model.util;
+
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonDeserializer;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonParseException;
+import com.google.gson.JsonPrimitive;
+import com.google.gson.JsonSerializationContext;
+import com.google.gson.JsonSerializer;
+
+import org.joda.time.DateTime;
+
+import java.lang.reflect.Type;
+
+public class DateTimeTypeAdapter implements JsonSerializer<DateTime>, JsonDeserializer<DateTime> {
+
+    @Override
+    public JsonElement serialize(DateTime src, Type typeOfSrc, JsonSerializationContext context) {
+        return new JsonPrimitive(src.toString());
+    }
+
+    @Override
+    public DateTime deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
+        return new DateTime(json.getAsString());
+    }
+
+}

+ 16 - 0
app/src/main/java/com/sheep/gamegroup/model/util/EntityUtils.java

@@ -0,0 +1,16 @@
+package com.sheep.gamegroup.model.util;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+
+import org.joda.time.DateTime;
+
+public final class EntityUtils {
+
+    private EntityUtils() {}
+
+    public static final Gson gson = new GsonBuilder()
+            .registerTypeAdapter(DateTime.class, new DateTimeTypeAdapter())
+            .create();
+
+}

+ 27 - 0
app/src/main/java/com/sheep/gamegroup/model/util/HttpUtils.java

@@ -0,0 +1,27 @@
+package com.sheep.gamegroup.model.util;
+
+
+import com.sheep.jiuyan.samllsheep.BuildConfig;
+
+import java.util.concurrent.TimeUnit;
+
+import okhttp3.OkHttpClient;
+import okhttp3.logging.HttpLoggingInterceptor;
+
+/**
+ * Created by ljy on 2018/3/8.
+ */
+public class HttpUtils {
+    private HttpUtils() {}
+    public static final OkHttpClient client = new OkHttpClient.Builder()
+            .connectTimeout(20, TimeUnit.SECONDS)
+            .readTimeout(20,TimeUnit.SECONDS)
+            .addInterceptor(createHttpLoggingInterceptor())
+            .build();
+
+    private static HttpLoggingInterceptor createHttpLoggingInterceptor() {
+        HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor();
+        loggingInterceptor.setLevel(BuildConfig.DEBUG ? HttpLoggingInterceptor.Level.BODY : HttpLoggingInterceptor.Level.NONE);
+        return loggingInterceptor;
+    }
+}

+ 14 - 0
app/src/main/java/com/sheep/gamegroup/presenter/SplashContract.java

@@ -0,0 +1,14 @@
+package com.sheep.gamegroup.presenter;
+
+/**
+ * Created by Administrator on 2018/3/9.
+ */
+
+public interface SplashContract {
+    interface Presenter{
+
+    }
+    interface View{
+
+    }
+}

+ 20 - 0
app/src/main/java/com/sheep/gamegroup/presenter/SplashPresenter.java

@@ -0,0 +1,20 @@
+package com.sheep.gamegroup.presenter;
+
+import com.sheep.gamegroup.model.api.ApiService;
+
+import javax.inject.Inject;
+
+/**
+ * Created by ljy on 2018/3/9.
+ */
+
+public class SplashPresenter implements SplashContract.Presenter {
+    private SplashContract.View view;
+    private ApiService apiService;
+
+    @Inject
+    public SplashPresenter(SplashContract.View view, ApiService apiService) {
+        this.view = view;
+        this.apiService = apiService;
+    }
+}

+ 87 - 0
app/src/main/java/com/sheep/gamegroup/util/AppUtil.java

@@ -0,0 +1,87 @@
+package com.sheep.gamegroup.util;
+
+import android.Manifest;
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.support.v4.app.ActivityCompat;
+import android.telephony.TelephonyManager;
+import android.view.WindowManager;
+
+/**
+ * Created by ljy on 2018/3/8.
+ */
+public class AppUtil {
+    /**
+     * 获取app版本名
+     */
+    public static String getAppVersionName(Context context) {
+        PackageManager pm = context.getPackageManager();
+        PackageInfo pi;
+        try {
+            pi = pm.getPackageInfo(context.getPackageName(), 0);
+            return pi.versionName;
+        } catch (PackageManager.NameNotFoundException e) {
+            e.printStackTrace();
+        }
+        return "";
+    }
+
+    /**
+     * 获取应用程序版本名称信息
+     */
+    public static String getVersionName(Context context) {
+        try {
+            PackageManager packageManager = context.getPackageManager();
+            PackageInfo packageInfo = packageManager.getPackageInfo(
+                    context.getPackageName(), 0);
+            return packageInfo.versionName;
+        } catch (PackageManager.NameNotFoundException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    /**
+     * 获取app版本号
+     */
+    public static int getAppVersionCode(Context context) {
+        PackageManager pm = context.getPackageManager();
+        PackageInfo pi;
+        try {
+            pi = pm.getPackageInfo(context.getPackageName(), 0);
+            return pi.versionCode;
+        } catch (PackageManager.NameNotFoundException e) {
+            e.printStackTrace();
+        }
+        return 0;
+    }
+
+    public static String getDeviceId(Context context) {
+        TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
+        if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
+            // TODO: Consider calling
+            //    ActivityCompat#requestPermissions
+            // here to request the missing permissions, and then overriding
+            //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
+            //                                          int[] grantResults)
+            // to handle the case where the user grants the permission. See the documentation
+            // for ActivityCompat#requestPermissions for more details.
+            return null;
+        }
+        return tm.getDeviceId();
+    }
+    public static int dp2px(Context paramContext, float paramFloat)
+    {
+        float scale = paramContext.getResources().getDisplayMetrics().density;
+        return (int)(0.5F + paramFloat * scale);
+    }
+    public static int getWindowWidth(Context paramContext)
+    {
+        return getWindowManager(paramContext).getDefaultDisplay().getWidth();
+    }
+    public static WindowManager getWindowManager(Context paramContext)
+    {
+        return (WindowManager)paramContext.getSystemService(Context.WINDOW_SERVICE);
+    }
+}

+ 59 - 0
app/src/main/java/com/sheep/gamegroup/util/FileUtil.java

@@ -0,0 +1,59 @@
+package com.sheep.gamegroup.util;
+
+import android.os.Environment;
+
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * Created by Mr.Yangxiufeng
+ * DATE 2016/7/25
+ * owspace
+ */
+public class FileUtil {
+    public static final String SDPATH = Environment.getExternalStorageDirectory().getAbsolutePath();
+
+    public static final String ADPATH = FileUtil.SDPATH + "/Owspace";
+
+    public static void createSdDir() {
+        File file = new File(FileUtil.ADPATH);
+        if (!file.exists()) {
+            boolean create = file.mkdirs();
+//            Logger.d("create = " + create);
+        } else {
+            if (!file.isDirectory()) {
+                file.delete();
+                file.mkdir();
+            }
+        }
+    }
+    public static boolean isFileExist(String paramString) {
+        if (paramString == null)
+            return false;
+        File localFile = new File(ADPATH + "/" + paramString);
+        if (localFile.exists()) {
+            return true;
+        }
+        return false;
+    }
+    public static File createFile(String fileName) throws IOException{
+        File file = new File(ADPATH,fileName);
+        file.createNewFile();
+        return file;
+    }
+    public static List<String> getAllAD(){
+        File file = new File(FileUtil.ADPATH);
+        File[] fileList = file.listFiles();
+        List<String> list = new ArrayList<>();
+        if(null != fileList){
+            for (File f:fileList) {
+                list.add(f.getAbsolutePath());
+            }
+        }
+        return list;
+    }
+}

+ 25 - 0
app/src/main/java/com/sheep/gamegroup/util/GlideConfiguration.java

@@ -0,0 +1,25 @@
+package com.sheep.gamegroup.util;
+
+import android.content.Context;
+
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.GlideBuilder;
+import com.bumptech.glide.load.DecodeFormat;
+import com.bumptech.glide.module.GlideModule;
+
+/**
+ * Created by Mr.Yangxiufeng
+ * DATE 2016/7/22
+ * owspace
+ */
+public class GlideConfiguration implements GlideModule{
+    @Override
+    public void applyOptions(Context context, GlideBuilder builder) {
+        builder.setDecodeFormat(DecodeFormat.PREFER_RGB_565);
+    }
+
+    @Override
+    public void registerComponents(Context context, Glide glide) {
+
+    }
+}

+ 67 - 0
app/src/main/java/com/sheep/gamegroup/util/NetUtil.java

@@ -0,0 +1,67 @@
+package com.sheep.gamegroup.util;
+
+import android.app.Activity;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
+
+/**
+ * Created by ljy on 2018/3/8.
+ */
+public class NetUtil {
+    /**
+     * 判断网络是否连接
+     *
+     * @param context
+     * @return
+     */
+    public static boolean isConnected(Context context)
+    {
+
+        ConnectivityManager connectivity = (ConnectivityManager) context
+                .getSystemService(Context.CONNECTIVITY_SERVICE);
+
+        if (null != connectivity)
+        {
+
+            NetworkInfo info = connectivity.getActiveNetworkInfo();
+            if (null != info && info.isConnected())
+            {
+                if (info.getState() == NetworkInfo.State.CONNECTED)
+                {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * 判断是否是wifi连接
+     */
+    public static boolean isWifi(Context context)
+    {
+        ConnectivityManager cm = (ConnectivityManager) context
+                .getSystemService(Context.CONNECTIVITY_SERVICE);
+
+        if (cm == null)
+            return false;
+        return cm.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI;
+
+    }
+
+    /**
+     * 打开网络设置界面
+     */
+    public static void openSetting(Activity activity)
+    {
+        Intent intent = new Intent("/");
+        ComponentName cm = new ComponentName("com.android.settings",
+                "com.android.settings.WirelessSettings");
+        intent.setComponent(cm);
+        intent.setAction("android.intent.action.VIEW");
+        activity.startActivityForResult(intent, 0);
+    }
+}

+ 51 - 0
app/src/main/java/com/sheep/gamegroup/util/OkHttpImageDownloader.java

@@ -0,0 +1,51 @@
+package com.sheep.gamegroup.util;
+
+import com.sheep.gamegroup.model.util.HttpUtils;
+
+import org.greenrobot.eventbus.Logger;
+
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import okhttp3.Request;
+
+/**
+ * Created by Mr.Yangxiufeng
+ * DATE 2016/7/25
+ * owspace
+ */
+public class OkHttpImageDownloader {
+    public static void download(String url){
+        final Request request = new Request.Builder().url(url).build();
+        HttpUtils.client.newCall(request).enqueue(new okhttp3.Callback() {
+            @Override
+            public void onFailure(okhttp3.Call call, IOException e) {
+//                Logger.d(e);
+            }
+
+            @Override
+            public void onResponse(okhttp3.Call call, okhttp3.Response response) throws IOException {
+
+                FileUtil.createSdDir();
+                String url = response.request().url().toString();
+                int index = url.lastIndexOf("/");
+                String pictureName = url.substring(index+1);
+                if(FileUtil.isFileExist(pictureName)){
+                    return;
+                }
+//                Logger.i("pictureName="+pictureName);
+                FileOutputStream fos = new FileOutputStream(FileUtil.createFile(pictureName));
+                InputStream in = response.body().byteStream();
+                byte[] buf = new byte[1024];
+                int len = 0;
+                while ((len = in.read(buf))!=-1){
+                    fos.write(buf,0,len);
+                }
+                fos.flush();
+                in.close();
+                fos.close();
+            }
+        });
+    }
+}

+ 94 - 0
app/src/main/java/com/sheep/gamegroup/util/PreferenceUtils.java

@@ -0,0 +1,94 @@
+package com.sheep.gamegroup.util;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.preference.PreferenceManager;
+
+/**
+ * Created by Mr.Yangxiufeng
+ * DATE 2016/8/2
+ * owspace
+ */
+public class PreferenceUtils {
+    public static String getPrefString(Context context, String key,
+                                       final String defaultValue) {
+        final SharedPreferences settings = PreferenceManager
+                .getDefaultSharedPreferences(context);
+        return settings.getString(key, defaultValue);
+    }
+
+    public static void setPrefString(Context context, final String key,
+                                     final String value) {
+        final SharedPreferences settings = PreferenceManager
+                .getDefaultSharedPreferences(context);
+        settings.edit().putString(key, value).apply();
+    }
+
+    public static boolean getPrefBoolean(Context context, final String key,
+                                         final boolean defaultValue) {
+        final SharedPreferences settings = PreferenceManager
+                .getDefaultSharedPreferences(context);
+        return settings.getBoolean(key, defaultValue);
+    }
+
+    public static boolean hasKey(Context context, final String key) {
+        return PreferenceManager.getDefaultSharedPreferences(context).contains(
+                key);
+    }
+
+    public static void setPrefBoolean(Context context, final String key,
+                                      final boolean value) {
+        final SharedPreferences settings = PreferenceManager
+                .getDefaultSharedPreferences(context);
+        settings.edit().putBoolean(key, value).apply();
+    }
+
+    public static void setPrefInt(Context context, final String key,
+                                  final int value) {
+        final SharedPreferences settings = PreferenceManager
+                .getDefaultSharedPreferences(context);
+        settings.edit().putInt(key, value).apply();
+    }
+
+    public static int getPrefInt(Context context, final String key,
+                                 final int defaultValue) {
+        final SharedPreferences settings = PreferenceManager
+                .getDefaultSharedPreferences(context);
+        return settings.getInt(key, defaultValue);
+    }
+
+    public static void setPrefFloat(Context context, final String key,
+                                    final float value) {
+        final SharedPreferences settings = PreferenceManager
+                .getDefaultSharedPreferences(context);
+        settings.edit().putFloat(key, value).apply();
+    }
+
+    public static float getPrefFloat(Context context, final String key,
+                                     final float defaultValue) {
+        final SharedPreferences settings = PreferenceManager
+                .getDefaultSharedPreferences(context);
+        return settings.getFloat(key, defaultValue);
+    }
+
+    public static void setSettingLong(Context context, final String key,
+                                      final long value) {
+        final SharedPreferences settings = PreferenceManager
+                .getDefaultSharedPreferences(context);
+        settings.edit().putLong(key, value).apply();
+    }
+
+    public static long getPrefLong(Context context, final String key,
+                                   final long defaultValue) {
+        final SharedPreferences settings = PreferenceManager
+                .getDefaultSharedPreferences(context);
+        return settings.getLong(key, defaultValue);
+    }
+
+    public static void clearPreference(Context context,
+                                       final SharedPreferences p) {
+        final SharedPreferences.Editor editor = p.edit();
+        editor.clear();
+        editor.apply();
+    }
+}

+ 50 - 0
app/src/main/java/com/sheep/gamegroup/util/TimeUtil.java

@@ -0,0 +1,50 @@
+package com.sheep.gamegroup.util;
+
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Locale;
+
+/**
+ * Created by ljy on 2018/3/8.
+ */
+public class TimeUtil {
+    public static long getCurrentSeconds(){
+        long ls = System.currentTimeMillis()/1000;
+        return ls;
+    }
+    public static String[] getCalendarShowTime(long paramLong)
+    {
+        String[] localObject;
+        String str = new SimpleDateFormat("yyyy:MMM:d", Locale.ENGLISH).format(new Date(paramLong));
+        try
+        {
+            String[] arrayOfString = str.split(":");
+            localObject = arrayOfString;
+            if ((localObject != null) && (localObject.length == 3));
+            return localObject;
+        }
+        catch (Exception localException)
+        {
+            while (true)
+                localException.printStackTrace();
+        }
+    }
+
+    public static String[] getCalendarShowTime(String paramString)
+    {
+        try {
+            long l = Long.valueOf(paramString);
+            Calendar localCalendar = Calendar.getInstance();
+            localCalendar.setTimeInMillis(1000L * l);
+            return getCalendarShowTime(localCalendar.getTimeInMillis());
+        } catch (NumberFormatException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+    public static String getDate(String formate){
+        String str = new SimpleDateFormat(formate, Locale.ENGLISH).format(new Date());
+        return str;
+    }
+}

+ 29 - 0
app/src/main/java/com/sheep/gamegroup/util/TimeUtils.java

@@ -0,0 +1,29 @@
+package com.sheep.gamegroup.util;
+
+import android.annotation.SuppressLint;
+
+/**
+ * Created by Mr.Yangxiufeng
+ * DATE 2016/11/24
+ * owspace
+ */
+
+public class TimeUtils {
+    /**
+     * Parse the time in milliseconds into String with the format: hh:mm:ss or mm:ss
+     *
+     * @param duration The time needs to be parsed.
+     */
+    @SuppressLint("DefaultLocale")
+    public static String formatDuration(int duration) {
+        duration /= 1000; // milliseconds into seconds
+        int minute = duration / 60;
+        int hour = minute / 60;
+        minute %= 60;
+        int second = duration % 60;
+        if (hour != 0)
+            return String.format("%2d:%02d:%02d", hour, minute, second);
+        else
+            return String.format("%02d:%02d", minute, second);
+    }
+}

+ 48 - 0
app/src/main/java/com/sheep/gamegroup/view/activity/LoginAct.java

@@ -0,0 +1,48 @@
+package com.sheep.gamegroup.view.activity;
+
+import android.os.Bundle;
+import android.widget.TextView;
+
+import com.sheep.jiuyan.samllsheep.R;
+import com.sheep.jiuyan.samllsheep.base.BaseActivity;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+
+/**
+ * Created by Administrator on 2018/3/8.
+ */
+
+public class LoginAct extends BaseActivity {
+    @BindView(R.id.weixin_login_tv)
+    TextView weixinLoginTv;
+    @BindView(R.id.tel_login_tv)
+    TextView telLoginTv;
+
+    @Override
+    protected int getLayoutId() {
+        return R.layout.login_act_layout;
+    }
+
+    @Override
+    public void initView() {
+
+    }
+
+    @Override
+    public void initListener() {
+
+    }
+
+    @Override
+    public void initData() {
+
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        // TODO: add setContentView(...) invocation
+        ButterKnife.bind(this);
+    }
+}

+ 94 - 0
app/src/main/java/com/sheep/gamegroup/view/activity/SplashAct.java

@@ -0,0 +1,94 @@
+package com.sheep.gamegroup.view.activity;
+
+import android.Manifest;
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.text.TextUtils;
+
+import com.sheep.gamegroup.presenter.SplashContract;
+import com.sheep.gamegroup.presenter.SplashPresenter;
+import com.sheep.jiuyan.samllsheep.base.BaseActivity;
+import com.sheep.jiuyan.samllsheep.page.LoginActivity;
+import com.sheep.jiuyan.samllsheep.page.MainActivity;
+import com.sheep.jiuyan.samllsheep.page.SplashActivity;
+import com.sheep.jiuyan.samllsheep.utils.SpUtils;
+
+import java.util.List;
+
+import javax.inject.Inject;
+
+import pub.devrel.easypermissions.EasyPermissions;
+
+/**
+ * Created by ljy on 2018/3/9.
+ */
+
+public class SplashAct extends BaseActivity implements SplashContract.View, EasyPermissions.PermissionCallbacks{
+    private Activity activity;
+
+    @Inject
+    SplashPresenter presenter;
+
+    private static final int PERMISSON_REQUESTCODE = 1;
+    /**
+     * 需要进行检测的权限数组
+     */
+    protected String[] needPermissions = {
+            Manifest.permission.WRITE_EXTERNAL_STORAGE,
+            Manifest.permission.READ_EXTERNAL_STORAGE,
+            Manifest.permission.READ_PHONE_STATE
+    };
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+    }
+
+    @Override
+    protected int getLayoutId() {
+        return 0;
+    }
+
+    @Override
+    public void initView() {
+
+    }
+
+    @Override
+    public void initListener() {
+
+    }
+
+    @Override
+    public void initData() {
+
+    }
+
+    @Override
+    public void onPermissionsGranted(int i, @NonNull List<String> list) {
+
+    }
+
+    @Override
+    public void onPermissionsDenied(int i, @NonNull List<String> list) {
+
+    }
+
+    private  void  goMain(){
+        String openId = SpUtils.getOpenId(getApplicationContext());
+        if (!TextUtils.isEmpty(openId)) {
+            Intent intent = new Intent(activity, MainActivity.class);
+            startActivity(intent);
+            finish();
+        } else {
+            Intent intent = new Intent(activity, LoginActivity.class);
+            startActivity(intent);
+            finish();
+        }
+
+    }
+}

+ 0 - 1
app/src/main/java/com/sheep/jiuyan/samllsheep/floatwindow/ShotScreen.java

@@ -16,7 +16,6 @@ import android.media.projection.MediaProjectionManager;
 import android.os.AsyncTask;
 import android.os.Build;
 import android.os.Handler;
-import android.support.v4.os.AsyncTaskCompat;
 import android.text.TextUtils;
 
 import java.io.File;

+ 24 - 0
app/src/main/res/layout/login_act_layout.xml

@@ -0,0 +1,24 @@
+<?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="match_parent">
+
+    <TextView
+        android:id="@+id/weixin_login_tv"
+        android:layout_margin="20dp"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="微信登录"
+        android:layout_centerInParent="true"
+        style="@style/style_btn"/>
+    <TextView
+        android:id="@+id/tel_login_tv"
+        android:layout_margin="20dp"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:text="手机登录"
+        android:layout_below="@+id/weixin_login_tv"
+        android:layout_centerInParent="true"
+        style="@style/style_btn"/>
+
+</RelativeLayout>

+ 2 - 0
build.gradle

@@ -7,6 +7,8 @@ buildscript {
     }
     dependencies {
         classpath 'com.android.tools.build:gradle:2.3.3'
+        classpath 'com.jakewharton:butterknife-gradle-plugin:+'
+        classpath 'com.neenbedankt.gradle.plugins:android-apt:+'
 //        classpath 'com.didi.virtualapk:gradle:0.9.1'
         // NOTE: Do not place your application dependencies here; they belong
         // in the individual module build.gradle files