5 | * 6 | * @author : Alex 7 | * @version : V 1.0.9 8 | */ 9 | 10 | public abstract class BasePresenterMvp< V extends Contract.ViewMvp, M extends Contract.ModeMvp> { 11 | 12 | public V mView; 13 | public M model; 14 | 15 | public void onAttach(V mView) { 16 | this.mView = mView; 17 | this.model = createModel(); 18 | } 19 | 20 | public void disAttach() { 21 | 22 | if (mView != null) { 23 | mView = null; 24 | } 25 | if (model != null){ 26 | model = null; 27 | } 28 | } 29 | 30 | /** 31 | * 创建Model 32 | * @return 返回Model 33 | */ 34 | public abstract M createModel(); 35 | 36 | } 37 | -------------------------------------------------------------------------------- /library/src/main/java/com/example/library/base/mvp/Contract.java: -------------------------------------------------------------------------------- 1 | package com.example.library.base.mvp; 2 | 3 | /** 4 | *5 | * 6 | * @author : Alex 7 | * @version : V 1.0.9 8 | */ 9 | 10 | public interface Contract { 11 | 12 | interface ModeMvp { 13 | 14 | } 15 | 16 | interface ViewMvp{ 17 | /** 18 | * 请求成功 19 | * 20 | * @param t T 21 | */ 22 | void loadSuccess(T t); 23 | 24 | /** 25 | * 请求失败 26 | * 27 | * @param s 错误信息 28 | */ 29 | void loadFailed(String s); 30 | 31 | 32 | } 33 | 34 | interface PresenterMvp { 35 | 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /library/src/main/java/com/example/library/base/recycler/RecyclerLoadView.java: -------------------------------------------------------------------------------- 1 | package com.example.library.base.recycler; 2 | 3 | import com.chad.library.adapter.base.loadmore.LoadMoreView; 4 | import com.example.library.R; 5 | 6 | 7 | /** 8 | * 9 | * 10 | * @author : Alex 11 | * @e_mail : 18238818283@sina.cn 12 | * @time : 2018/01/18 13 | * @desc : 14 | * @version : V 1.0.9 15 | */ 16 | 17 | public class RecyclerLoadView extends LoadMoreView { 18 | 19 | @Override 20 | public int getLayoutId() { 21 | return R.layout.quick_view_load_more; 22 | } 23 | 24 | @Override 25 | protected int getLoadingViewId() { 26 | return R.id.load_more_loading_view; 27 | } 28 | 29 | @Override 30 | protected int getLoadFailViewId() { 31 | return R.id.load_more_load_fail_view; 32 | } 33 | 34 | @Override 35 | protected int getLoadEndViewId() { 36 | return R.id.load_more_load_end_view; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /library/src/main/java/com/example/library/base/recycler/RecyclerMvpView.java: -------------------------------------------------------------------------------- 1 | package com.example.library.base.recycler; 2 | 3 | import com.example.library.base.mvp.Contract; 4 | 5 | /** 6 | *7 | * 8 | * @author : Alex 9 | * @e_mail : 18238818283@sina.cn 10 | * @time : 2018/01/22 11 | * @desc : 12 | * @version : V 1.0.9 13 | */ 14 | 15 | public interface RecyclerMvpViewextends Contract.ViewMvp { 16 | /** 17 | * 18 | *下拉加载 19 | * @param t 数据类型 20 | */ 21 | void showLoadMoreData(T t); 22 | 23 | /** 24 | * 下拉加载失败 25 | * @param errorMessage 26 | */ 27 | void showLoadMoreError(String errorMessage); 28 | 29 | /** 30 | * 刷新 31 | * @param t 32 | */ 33 | void showRefreshData(T t); 34 | 35 | /** 36 | * 刷新失败 37 | * @param errorMessage 38 | */ 39 | void showRefreshError(String errorMessage); 40 | 41 | /** 42 | * 单个状态改变 43 | * @param position 44 | */ 45 | void notifyItemChange(int position); 46 | 47 | /** 48 | * 网络错误 49 | */ 50 | void showNetWorkError(); 51 | 52 | 53 | } 54 | -------------------------------------------------------------------------------- /library/src/main/java/com/example/library/helper/okhttp/cache/HttpCache.java: -------------------------------------------------------------------------------- 1 | package com.example.library.helper.okhttp.cache; 2 | 3 | import com.example.library.utils.AppUtils; 4 | 5 | import java.io.File; 6 | 7 | import okhttp3.Cache; 8 | 9 | /** 10 | * Created by Horrarndoo on 2017/9/12. 11 | * 12 | */ 13 | public class HttpCache { 14 | 15 | private static final int HTTP_RESPONSE_DISK_CACHE_MAX_SIZE = 50 * 1024 * 1024; 16 | 17 | public static Cache getCache() { 18 | return new Cache(new File(AppUtils.INSTANCE.getContext().getExternalCacheDir().getAbsolutePath() + File 19 | .separator + "data/NetCache"), 20 | HTTP_RESPONSE_DISK_CACHE_MAX_SIZE); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /library/src/main/java/com/example/library/login/ILoginView.kt: -------------------------------------------------------------------------------- 1 | package com.example.administrator.login.aop.login 2 | 3 | /** 4 | * @author : Alex 5 | * @date : 2018/09/03 6 | * @version : V 2.0.0 7 | */ 8 | /** 9 | * 登陆接口 10 | */ 11 | interface ILoginView { 12 | 13 | /** 14 | * 判断是否登陆 15 | * @return true 表示登陆状态 16 | */ 17 | fun isLogin(): Boolean 18 | 19 | /** 20 | * 实现登陆(或跳转到登陆的功能) 21 | * @param userDefine 表示操作的标志 22 | */ 23 | fun login(userDefine: Int) 24 | 25 | /** 26 | * 推出登陆功能 27 | */ 28 | fun exitLogin() 29 | } -------------------------------------------------------------------------------- /library/src/main/java/com/example/library/login/LoginAnimation.java: -------------------------------------------------------------------------------- 1 | package com.example.library.login; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * @author : Alex 10 | * @version : V 2.0.0 11 | * @date : 2018/09/03 12 | * 在任何需要判断登陆状态方法上添加 @LoginAnimation 注解,如: 13 | * ================================ 14 | * @LoginAnimation 15 | * public void click(){ 16 | * ... 17 | * } 18 | * ================================== 19 | */ 20 | @Retention(RetentionPolicy.RUNTIME) 21 | @Target(ElementType.METHOD) 22 | public @interface LoginAnimation { 23 | int value() default 0; 24 | } 25 | -------------------------------------------------------------------------------- /library/src/main/java/com/example/library/login/LoginAssistant.kt: -------------------------------------------------------------------------------- 1 | package com.example.administrator.login.aop.login 2 | 3 | 4 | 5 | /** 6 | * @author : Alex 7 | * @date : 2018/09/03 8 | * @version : V 2.0.0 9 | */ 10 | class LoginAssistant { 11 | 12 | companion object { 13 | private var loginAssistant: LoginAssistant? = null 14 | fun getInstance(): LoginAssistant { 15 | if (loginAssistant == null) { 16 | synchronized(LoginAssistant::class.java) { 17 | if (loginAssistant == null) { 18 | loginAssistant = LoginAssistant() 19 | } 20 | } 21 | } 22 | return loginAssistant!! 23 | } 24 | } 25 | 26 | var view: ILoginView? = null 27 | 28 | } -------------------------------------------------------------------------------- /library/src/main/java/com/example/library/paging/BaseDataSourceFactory.kt: -------------------------------------------------------------------------------- 1 | package com.example.administrator.paging.paging 2 | 3 | import android.arch.lifecycle.MutableLiveData 4 | import android.arch.paging.DataSource 5 | 6 | /** 7 | * 创建 DataSourceFactory,用于创建LiveData
> 8 | * T:表示区分每个Item标志的类型 如:id : Int 9 | * M:表示获取数据的Bean 10 | * @author : Alex 11 | * @date : 2018/08/21 12 | * @version : V 2.0.0 13 | */ 14 | abstract class BaseDataSourceFactory : DataSource.Factory () { 15 | 16 | //创建观察的LivaData ,操作的改变都是修改sourceLivaData的值,触发系列操作 17 | val sourceLivaData = MutableLiveData >() 18 | 19 | override fun create(): BaseItemDataSource { 20 | val dataSource: BaseItemDataSource = createDataSource() 21 | sourceLivaData.postValue(dataSource) 22 | return dataSource 23 | } 24 | 25 | /** 26 | * 创建 实现的DataSources实例 27 | */ 28 | abstract fun createDataSource(): BaseItemDataSource 29 | 30 | } -------------------------------------------------------------------------------- /library/src/main/java/com/example/library/paging/Listing.kt: -------------------------------------------------------------------------------- 1 | package com.example.administrator.paging.paging.base 2 | 3 | import android.arch.lifecycle.LiveData 4 | import android.arch.paging.PagedList 5 | 6 | /** 7 | * 用于封装需要监听的对象和执行的操作,用于系统交互 8 | * pagedList : 观察获取数据列表 9 | * networkStatus:观察网络状态 10 | * refreshState : 观察刷新状态 11 | * refresh : 执行刷新操作 12 | * retry : 重试操作 13 | * @author : Alex 14 | * @date : 2018/08/21 15 | * @version : V 2.0.0 16 | */ 17 | data class Listing ( 18 | val pagedList: LiveData >, 19 | val networkStatus: LiveData >, 20 | val refreshState: LiveData >, 21 | val refresh: () -> Unit, 22 | val retry: () -> Unit) 23 | -------------------------------------------------------------------------------- /library/src/main/java/com/example/library/paging/Repository.kt: -------------------------------------------------------------------------------- 1 | package com.example.administrator.paging.paging.base 2 | 3 | /** 4 | * Repository 创建Listing实例,封装所有要观察的属性和状态 5 | * @author : Alex 6 | * @date : 2018/08/21 7 | * @version : V 2.0.0 8 | */ 9 | interface Repository { 10 | fun getDataList(pageSize: Int): Listing 11 | } -------------------------------------------------------------------------------- /library/src/main/java/com/example/library/paging/Resource.kt: -------------------------------------------------------------------------------- 1 | package com.example.administrator.paging.paging.base 2 | 3 | /** 4 | * Created by juan on 2018/05/23. 5 | */ 6 | data class Resource (val status: Status, val data: T?, val message: String?) { 7 | companion object { 8 | fun loading(msg: String? = null, data: T? = null): Resource { 9 | return Resource(Status.LOADING, data, msg) 10 | } 11 | 12 | fun success(data: T? = null): Resource { 13 | return Resource(Status.SUCCESS, data, null) 14 | } 15 | 16 | fun error(msg: String? = null, data: T? = null): Resource { 17 | return Resource(Status.ERROR, data, msg) 18 | } 19 | } 20 | } 21 | 22 | enum class Status { 23 | SUCCESS, 24 | ERROR, 25 | LOADING 26 | } -------------------------------------------------------------------------------- /library/src/main/java/com/example/library/utils/MD5Utils.kt: -------------------------------------------------------------------------------- 1 | package com.example.library.utils 2 | 3 | import java.security.MessageDigest 4 | 5 | /** 6 | * Created by Horrarndoo on 2017/4/5. 7 | * 8 | * 9 | * MD5加密工具类 10 | */ 11 | object MD5Utils { 12 | /** 13 | * MD5加密,32位 14 | */ 15 | fun getMD5(str: String): String { 16 | val md5: MessageDigest 17 | try { 18 | md5 = MessageDigest.getInstance("MD5") 19 | } catch (e: Exception) { 20 | e.printStackTrace() 21 | return "" 22 | } 23 | 24 | val charArray = str.toCharArray() 25 | val byteArray = ByteArray(charArray.size) 26 | for (i in charArray.indices) { 27 | byteArray[i] = charArray[i].toByte() 28 | } 29 | val md5Bytes = md5.digest(byteArray) 30 | val hexValue = StringBuffer() 31 | for (i in md5Bytes.indices) { 32 | val `val` = md5Bytes[i].toInt() and 0xff 33 | if (`val` < 16) { 34 | hexValue.append("0") 35 | } 36 | hexValue.append(Integer.toHexString(`val`)) 37 | } 38 | return hexValue.toString() 39 | } 40 | } -------------------------------------------------------------------------------- /library/src/main/java/com/example/library/utils/glide/GlideExtend.java: -------------------------------------------------------------------------------- 1 | package com.example.library.utils.glide; 2 | 3 | import com.bumptech.glide.annotation.GlideExtension; 4 | import com.bumptech.glide.annotation.GlideOption; 5 | import com.bumptech.glide.module.AppGlideModule; 6 | import com.bumptech.glide.request.RequestOptions; 7 | import com.example.library.R; 8 | 9 | /** 10 | * @author : Alex 11 | * @version : V 2.0.0 12 | * @date : 2018/06/01 13 | */ 14 | 15 | @GlideExtension 16 | public final class GlideExtend extends AppGlideModule { 17 | 18 | private GlideExtend() { 19 | } 20 | 21 | @GlideOption 22 | public static void simple(RequestOptions options) { 23 | options.centerCrop().placeholder(R.drawable.ic_vector_empty); 24 | } 25 | 26 | 27 | } 28 | -------------------------------------------------------------------------------- /library/src/main/java/com/example/library/utils/glide/GlideModel.java: -------------------------------------------------------------------------------- 1 | package com.example.library.utils.glide; 2 | 3 | import com.bumptech.glide.annotation.GlideModule; 4 | import com.bumptech.glide.module.AppGlideModule; 5 | 6 | /** 7 | * @author : Alex 8 | * @version : V 2.0.0 9 | * @date : 2018/06/01 10 | */ 11 | 12 | @GlideModule 13 | public class GlideModel extends AppGlideModule { 14 | } 15 | -------------------------------------------------------------------------------- /library/src/main/java/com/example/library/utils/glide/ImageLoader.java: -------------------------------------------------------------------------------- 1 | package com.example.library.utils.glide; 2 | 3 | import android.content.Context; 4 | import android.widget.ImageView; 5 | 6 | /** 7 | * @author : Alex 8 | * @version : V 2.0.0 9 | * @date : 2018/09/05 10 | */ 11 | public class ImageLoader { 12 | 13 | public static void loadImageFromUrlThumb(Context context, String url, Float thumbnail, ImageView imageView) { 14 | GlideApp.with(context).load(url).simple().thumbnail(thumbnail).into(imageView); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /library/src/main/res/anim/activity_finish_trans_in.xml: -------------------------------------------------------------------------------- 1 | 3 | -------------------------------------------------------------------------------- /library/src/main/res/anim/activity_finish_trans_out.xml: -------------------------------------------------------------------------------- 1 |11 | 4 | -------------------------------------------------------------------------------- /library/src/main/res/anim/activity_start_zoom_in.xml: -------------------------------------------------------------------------------- 1 | 2 |13 | 21 | 4 | -------------------------------------------------------------------------------- /library/src/main/res/anim/activity_start_zoom_out.xml: -------------------------------------------------------------------------------- 1 | 2 |12 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/ic_arrow_back_black_24dp.xml: -------------------------------------------------------------------------------- 1 |17 | 4 | 6 | -------------------------------------------------------------------------------- /library/src/main/res/layout/network_notice_layout.xml: -------------------------------------------------------------------------------- 1 | 2 |5 | 8 | 9 | -------------------------------------------------------------------------------- /library/src/main/res/layout/view_empty.xml: -------------------------------------------------------------------------------- 1 | 2 |22 | 23 | 7 | 8 | -------------------------------------------------------------------------------- /library/src/main/res/layout/view_network_error.xml: -------------------------------------------------------------------------------- 1 | 2 |12 | 13 | 19 | 8 | 9 | -------------------------------------------------------------------------------- /library/src/main/res/menu/navigation.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /library/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 |14 | 15 | 21 | 3 | -------------------------------------------------------------------------------- /library/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 |4 | 5 | 3 | -------------------------------------------------------------------------------- /library/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexTiti/WanAndroid/24c79d885188c981c90a7f0cc101a8f12d5c48ff/library/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /library/src/main/res/mipmap-hdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexTiti/WanAndroid/24c79d885188c981c90a7f0cc101a8f12d5c48ff/library/src/main/res/mipmap-hdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /library/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexTiti/WanAndroid/24c79d885188c981c90a7f0cc101a8f12d5c48ff/library/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /library/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexTiti/WanAndroid/24c79d885188c981c90a7f0cc101a8f12d5c48ff/library/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /library/src/main/res/mipmap-mdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexTiti/WanAndroid/24c79d885188c981c90a7f0cc101a8f12d5c48ff/library/src/main/res/mipmap-mdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /library/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexTiti/WanAndroid/24c79d885188c981c90a7f0cc101a8f12d5c48ff/library/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /library/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexTiti/WanAndroid/24c79d885188c981c90a7f0cc101a8f12d5c48ff/library/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /library/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexTiti/WanAndroid/24c79d885188c981c90a7f0cc101a8f12d5c48ff/library/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /library/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexTiti/WanAndroid/24c79d885188c981c90a7f0cc101a8f12d5c48ff/library/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /library/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexTiti/WanAndroid/24c79d885188c981c90a7f0cc101a8f12d5c48ff/library/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /library/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexTiti/WanAndroid/24c79d885188c981c90a7f0cc101a8f12d5c48ff/library/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /library/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexTiti/WanAndroid/24c79d885188c981c90a7f0cc101a8f12d5c48ff/library/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /library/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexTiti/WanAndroid/24c79d885188c981c90a7f0cc101a8f12d5c48ff/library/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /library/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexTiti/WanAndroid/24c79d885188c981c90a7f0cc101a8f12d5c48ff/library/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /library/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexTiti/WanAndroid/24c79d885188c981c90a7f0cc101a8f12d5c48ff/library/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /library/src/main/res/values-sw360dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 |4 | 5 | 3 | 12 | -------------------------------------------------------------------------------- /library/src/main/res/values-sw400dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 |4.0000dp 4 |10.0000dp 5 |40.0000dp 6 |72.0000dp 7 |12.0000sp 8 |14.0000sp 9 |16.0000sp 10 | 11 |3 | 11 | -------------------------------------------------------------------------------- /library/src/main/res/values-sw420dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 |4.4444dp 4 |11.1111dp 5 |44.4444dp 6 |80.0000dp 7 |13.3333sp 8 |15.5556sp 9 |17.7778sp 10 |3 | 11 | -------------------------------------------------------------------------------- /library/src/main/res/values-sw480dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 |4.6667dp 4 |11.6667dp 5 |46.6667dp 6 |84.0000dp 7 |14.0000sp 8 |16.3333sp 9 |18.6667sp 10 |3 | 11 | -------------------------------------------------------------------------------- /library/src/main/res/values-sw560dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 |5.3333dp 4 |13.3333dp 5 |53.3333dp 6 |96.0000dp 7 |16.0000sp 8 |18.6667sp 9 |21.3333sp 10 |3 | 11 | -------------------------------------------------------------------------------- /library/src/main/res/values-sw640dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 |6.2222dp 4 |15.5556dp 5 |62.2222dp 6 |112.0000dp 7 |18.6667sp 8 |21.7778sp 9 |24.8889sp 10 |3 | 11 | -------------------------------------------------------------------------------- /library/src/main/res/values-v21/styles.xml: -------------------------------------------------------------------------------- 1 | 2 |7.1111dp 4 |17.7778dp 5 |71.1111dp 6 |128.0000dp 7 |21.3333sp 8 |24.8889sp 9 |28.4444sp 10 |3 | 11 | -------------------------------------------------------------------------------- /library/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 |3 | -------------------------------------------------------------------------------- /library/src/main/res/values/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 |#3F51B5 4 |#303F9F 5 |#FF4081 6 |3 | -------------------------------------------------------------------------------- /library/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 |#2FFF0C 4 |2 | 6 | -------------------------------------------------------------------------------- /library/src/main/res/values/themes.xml: -------------------------------------------------------------------------------- 1 | 2 |Library 3 |Confirm 4 |Cancel 5 |3 | 4 | 13 | 14 | 15 | 16 | 17 | 18 | 21 | 22 | -------------------------------------------------------------------------------- /library/src/test/java/com/example/library/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.example.library; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /screenshot/wanandroid.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexTiti/WanAndroid/24c79d885188c981c90a7f0cc101a8f12d5c48ff/screenshot/wanandroid.gif -------------------------------------------------------------------------------- /screenshot/截屏_20181114_105402.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexTiti/WanAndroid/24c79d885188c981c90a7f0cc101a8f12d5c48ff/screenshot/截屏_20181114_105402.jpg -------------------------------------------------------------------------------- /screenshot/截屏_20181114_105409.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexTiti/WanAndroid/24c79d885188c981c90a7f0cc101a8f12d5c48ff/screenshot/截屏_20181114_105409.jpg -------------------------------------------------------------------------------- /screenshot/截屏_20181114_105413.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexTiti/WanAndroid/24c79d885188c981c90a7f0cc101a8f12d5c48ff/screenshot/截屏_20181114_105413.jpg -------------------------------------------------------------------------------- /screenshot/截屏_20181114_105419.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexTiti/WanAndroid/24c79d885188c981c90a7f0cc101a8f12d5c48ff/screenshot/截屏_20181114_105419.jpg -------------------------------------------------------------------------------- /screenshot/截屏_20181114_105423.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexTiti/WanAndroid/24c79d885188c981c90a7f0cc101a8f12d5c48ff/screenshot/截屏_20181114_105423.jpg -------------------------------------------------------------------------------- /screenshot/截屏_20181114_105445.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexTiti/WanAndroid/24c79d885188c981c90a7f0cc101a8f12d5c48ff/screenshot/截屏_20181114_105445.jpg -------------------------------------------------------------------------------- /screenshot/截屏_20181114_105453.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexTiti/WanAndroid/24c79d885188c981c90a7f0cc101a8f12d5c48ff/screenshot/截屏_20181114_105453.jpg -------------------------------------------------------------------------------- /screenshot/截屏_20181114_105510.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/AlexTiti/WanAndroid/24c79d885188c981c90a7f0cc101a8f12d5c48ff/screenshot/截屏_20181114_105510.jpg -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app',':library' 2 | --------------------------------------------------------------------------------