Browse Source

个人中心 实现逻辑

developer
zhanghui 8 years ago
parent
commit
682890235e
14 changed files with 454 additions and 42 deletions
  1. +7
    -3
      app/build.gradle
  2. +11
    -0
      app/src/main/AndroidManifest.xml
  3. +7
    -1
      app/src/main/java/com/qhclh/ytzh/base/BaseActivity.java
  4. +4
    -0
      app/src/main/java/com/qhclh/ytzh/base/BaseFragment.java
  5. +39
    -4
      app/src/main/java/com/qhclh/ytzh/me/MeFragment.java
  6. +222
    -4
      app/src/main/java/com/qhclh/ytzh/me/MineInfoActivity.java
  7. +75
    -1
      app/src/main/java/com/qhclh/ytzh/me/SettingActivity.java
  8. +1
    -1
      app/src/main/java/com/qhclh/ytzh/splash/SplashActivity.java
  9. +2
    -0
      app/src/main/java/com/qhclh/ytzh/utils/widget/XCRoundImageView.java
  10. +66
    -24
      app/src/main/res/layout/activity_mine_info.xml
  11. +2
    -2
      app/src/main/res/layout/activity_setting.xml
  12. +2
    -1
      app/src/main/res/values/colors.xml
  13. +13
    -0
      app/src/main/res/values/styles.xml
  14. +3
    -1
      build.gradle

+ 7
- 3
app/build.gradle View File

@ -1,5 +1,6 @@
apply plugin: 'com.android.application'
apply plugin: 'android-apt'
//apply plugin: 'android-apt'
apply plugin: 'com.jakewharton.butterknife'
android {
compileSdkVersion 26
@ -39,7 +40,6 @@ dependencies {
///<
///<
compile 'com.android.support:appcompat-v7:26.+'
compile 'com.jakewharton:butterknife:8.4.0'
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'com.android.support:support-v4:26.0.0-alpha1'
compile 'com.android.support:design:26.0.0-alpha1'
@ -56,5 +56,9 @@ dependencies {
compile 'com.prolificinteractive:material-calendarview:1.4.0'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
apt 'com.jakewharton:butterknife-compiler:8.4.0'
//
compile 'com.github.YancyYe:GalleryPick:1.2.1'
compile 'com.jakewharton:butterknife:8.5.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'
}

+ 11
- 0
app/src/main/AndroidManifest.xml View File

@ -19,6 +19,17 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<!--图片选择器-->
<provider
android:name=".utils.MyProvider"
android:authorities="com.yancy.gallerypickdemo.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
<activity
android:name=".splash.SplashActivity"
android:screenOrientation="portrait">


+ 7
- 1
app/src/main/java/com/qhclh/ytzh/base/BaseActivity.java View File

@ -37,9 +37,13 @@ public abstract class BaseActivity extends AppCompatActivity {
}
protected abstract int setLayoutId();
protected abstract void initView();
protected abstract void initData();
protected abstract void initOper();
///< toolbar设置
public void initToolbar(Toolbar toolbar, String title, View.OnClickListener listener) {
if (toolbar == null) {
@ -87,7 +91,9 @@ public abstract class BaseActivity extends AppCompatActivity {
ActivityCollector.removeActivity(this);
}
public void finishAll(){ActivityCollector.finishAll();}
public void finishAll() {
ActivityCollector.finishAll();
}
public void showToast(String str) {
Toast.makeText(this, str, Toast.LENGTH_SHORT).show();


+ 4
- 0
app/src/main/java/com/qhclh/ytzh/base/BaseFragment.java View File

@ -1,5 +1,6 @@
package com.qhclh.ytzh.base;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
@ -8,6 +9,8 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import butterknife.ButterKnife;
/**
* Created by 青花瓷 on 2017/7/19.
*/
@ -18,6 +21,7 @@ public abstract class BaseFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(setLayout(), container, false);
ButterKnife.bind(this, view);
return view;
}


+ 39
- 4
app/src/main/java/com/qhclh/ytzh/me/MeFragment.java View File

@ -1,17 +1,36 @@
package com.qhclh.ytzh.me;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.qhclh.ytzh.R;
import com.qhclh.ytzh.base.BaseFragment;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import butterknife.Unbinder;
/**
* Created by 青花瓷 on 2017/11/28.
*/
public class MeFragment extends BaseFragment {
private TextView me_msg,me_set;
@BindView(R.id.imageView)
ImageView imageView;
@BindView(R.id.me_msg)
TextView meMsg;
@BindView(R.id.me_set)
TextView meSet;
private TextView me_msg, me_set;
@Override
protected int setLayout() {
@ -21,11 +40,8 @@ public class MeFragment extends BaseFragment {
@Override
protected void initView() {
drawView();
}
@Override
protected void initData() {
@ -52,4 +68,23 @@ public class MeFragment extends BaseFragment {
me_msg.setCompoundDrawables(message_icon, null, zhankai_3x, null);//只放左边 右边
me_set.setCompoundDrawables(setting_icon, null, zhankai_3x, null);//只放左边 右边
}
@Override
public void onDestroyView() {
super.onDestroyView();
}
@OnClick({R.id.me_msg, R.id.me_set})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.me_msg:
Intent intent=new Intent(getActivity(),MineInfoActivity.class);
getActivity().startActivity(intent);
break;
case R.id.me_set:
Intent settingIntent=new Intent(getActivity(),SettingActivity.class);
getActivity().startActivity(settingIntent);
break;
}
}
}

+ 222
- 4
app/src/main/java/com/qhclh/ytzh/me/MineInfoActivity.java View File

@ -1,17 +1,92 @@
package com.qhclh.ytzh.me;
import android.Manifest;
import android.content.DialogInterface;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.qhclh.ytzh.R;
import com.qhclh.ytzh.base.BaseActivity;
import com.qhclh.ytzh.utils.BitmapUtils;
import com.qhclh.ytzh.utils.DateUtils;
import com.qhclh.ytzh.utils.GlideLoader;
import com.qhclh.ytzh.utils.dialog.MixedDialog;
import com.qhclh.ytzh.utils.widget.DateTimePickDialog;
import com.qhclh.ytzh.utils.widget.XCRoundImageView;
import com.yancy.gallerypick.config.GalleryConfig;
import com.yancy.gallerypick.config.GalleryPick;
import com.yancy.gallerypick.inter.IHandlerCallBack;
import java.util.Date;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import static com.qhclh.ytzh.utils.DateUtils.PATTERN_TRANSVERSE;
import static com.qhclh.ytzh.utils.DateUtils.format;
public class MineInfoActivity extends BaseActivity {
/**
* 监听获取数据信息
*/
IHandlerCallBack iHandlerCallBack = new IHandlerCallBack() {
@Override
public void onStart() {
}
@Override
public void onSuccess(List<String> photoList) {
for (String path : photoList) {
imageView.setImageBitmap(BitmapUtils.getSmallBitmap(path, 100, 100));
}
}
@Override
public void onCancel() {
}
@Override
public void onFinish() {
}
@Override
public void onError() {
}
};
@BindView(R.id.textView)
TextView textView;
@BindView(R.id.imageView)
XCRoundImageView imageView;
@BindView(R.id.ly_personPicture)
LinearLayout lyPersonPicture;
@BindView(R.id.ly_phoneNumber)
LinearLayout lyPhoneNumber;
@BindView(R.id.ly_sex)
LinearLayout lySex;
@BindView(R.id.ly_birthday)
LinearLayout lyBirthday;
public static final int PERMISSIONS_REQUEST_READ_CONTACTS = 0x01;
@BindView(R.id.tv_phoneNumber)
TextView tvPhoneNumber;
@BindView(R.id.tv_sex)
TextView tvSex;
@BindView(R.id.tv_birthday)
TextView tvBirthday;
@BindView(R.id.tv_toolbar_title)
TextView tvToolbarTitle;
@BindView(R.id.toolbar)
Toolbar toolbar;
private MixedDialog mixedDialog;
@Override
protected int setLayoutId() {
@ -20,7 +95,12 @@ public class MineInfoActivity extends BaseActivity {
@Override
protected void initView() {
initToolbar(toolbar, "个人资料", new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
}
@Override
@ -33,4 +113,142 @@ public class MineInfoActivity extends BaseActivity {
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// TODO: add setContentView(...) invocation
ButterKnife.bind(this);
}
@OnClick({R.id.ly_personPicture, R.id.ly_phoneNumber, R.id.ly_sex, R.id.ly_birthday})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.ly_personPicture:
openSelectImage();
break;
case R.id.ly_phoneNumber:
ClickBtn1();
break;
case R.id.ly_sex:
setSexInfo();
break;
case R.id.ly_birthday:
setTimeDialog();
break;
}
}
/**
* 打开图片选择器前进行授权
*/
private void openSelectImage() {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
// 提示用户如果想要正常使用要手动去设置中授权
Toast.makeText(this, "请在 设置-应用管理 中开启此应用的储存授权。", Toast.LENGTH_SHORT).show();
} else {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA}, PERMISSIONS_REQUEST_READ_CONTACTS);
}
} else {
// 进行正常操作
openGallery();
}
}
/**
* 性别选择
*/
private void setSexInfo() {
final String[] items = new String[2];
items[0] = "男";
items[1] = "女";
MixedDialog.showDialog(this, items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
tvSex.setText(items[which]);
}
});
}
/**
* 日期选择器
*/
private void setTimeDialog() {
DateTimePickDialog mDateTimePickDialog = new DateTimePickDialog(this, new DateTimePickDialog.DateChangedCallBack() {
@Override
public void onDateChanged(Date date) {
String birthday_time = DateUtils.format(date, PATTERN_TRANSVERSE);
tvBirthday.setText(birthday_time);
}
});
mDateTimePickDialog.show();
}
/**
* 授权
*
* @param requestCode
* @param permissions
* @param grantResults
*/
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == PERMISSIONS_REQUEST_READ_CONTACTS) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
openGallery();
}
}
}
/**
* 打开图片选择器
*/
private void openGallery() {
GalleryConfig galleryConfig = new GalleryConfig.Builder()
.imageLoader(new GlideLoader()) // ImageLoader 加载框架必填
.iHandlerCallBack(iHandlerCallBack) // 监听接口必填
.provider("com.yancy.gallerypickdemo.fileprovider") // provider (必填)
.multiSelect(false) // 是否多选 默认false
.multiSelect(false, 9) // 配置是否多选的同时 配置多选数量 默认false 9
.isShowCamera(true) // 是否现实相机按钮 默认false
.filePath("/Gallery/Pictures") // 图片存放路径
.build();
//打开图片选择器
GalleryPick.getInstance().setGalleryConfig(galleryConfig).open(this);
}
/**
* 手机号编辑
*/
public void ClickBtn1() {
mixedDialog = new MixedDialog(this, MixedDialog.SINGLE, R.style.MyDialog);
//标题
mixedDialog.setTitleText("手机号");
mixedDialog.show();
//触摸对话框外围区域是否消失对话框
mixedDialog.setCanceledOnTouchOutside(true);
mixedDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
mixedDialog.dismiss();
}
});
/**
* 确定按钮点击事件
* 显示输入的电话号码
* 关闭对话框
*/
mixedDialog.buttonOK.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String phone_str = mixedDialog.importEditText.getText().toString();
tvPhoneNumber.setText(phone_str);
mixedDialog.dismiss();
}
});
}
}

+ 75
- 1
app/src/main/java/com/qhclh/ytzh/me/SettingActivity.java View File

@ -1,10 +1,31 @@
package com.qhclh.ytzh.me;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.TextView;
import com.qhclh.ytzh.R;
import com.qhclh.ytzh.base.BaseActivity;
import com.qhclh.ytzh.utils.ActivityCollector;
import com.qhclh.ytzh.utils.dialog.MixedDialog;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
public class SettingActivity extends BaseActivity {
@BindView(R.id.tv_phoneNumber)
TextView tvPhoneNumber;
@BindView(R.id.tv_logout)
TextView tv_logout;
@BindView(R.id.tv_toolbar_title)
TextView tvToolbarTitle;
@BindView(R.id.toolbar)
Toolbar toolbar;
private MixedDialog mixedDialog;
@Override
protected int setLayoutId() {
@ -13,7 +34,12 @@ public class SettingActivity extends BaseActivity {
@Override
protected void initView() {
initToolbar(toolbar, "设置", new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
}
@Override
@ -25,4 +51,52 @@ public class SettingActivity extends BaseActivity {
protected void initOper() {
}
public void ClickBtn3() {
mixedDialog = new MixedDialog(this, MixedDialog.ALERT, R.style.MyDialog);
mixedDialog.setTitleText("");
mixedDialog.show();
mixedDialog.setCanceledOnTouchOutside(true);
mixedDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
mixedDialog.dismiss();
}
});
mixedDialog.buttonOK.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ActivityCollector.finishAll();
}
});
// mixedDialog.buttonCancel.setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// mixedDialog.dismiss();
// }
// });
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// TODO: add setContentView(...) invocation
ButterKnife.bind(this);
}
@OnClick({R.id.tv_phoneNumber, R.id.tv_logout})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.tv_phoneNumber:
break;
case R.id.tv_logout:
ClickBtn3();
break;
}
}
}

+ 1
- 1
app/src/main/java/com/qhclh/ytzh/splash/SplashActivity.java View File

@ -61,7 +61,7 @@ public class SplashActivity extends BaseActivity {
}
private void redirectTo() {
startActivity(new Intent(this, LoginActivity.class));
startActivity(new Intent(this, MainActivity.class));
finish();
}
}

+ 2
- 0
app/src/main/java/com/qhclh/ytzh/utils/widget/XCRoundImageView.java View File

@ -21,10 +21,12 @@ public class XCRoundImageView extends ImageView{
private Paint paint;
public XCRoundImageView(Context context) {
super(context);
paint=new Paint();
}
public XCRoundImageView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
paint=new Paint();
}
public XCRoundImageView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {


+ 66
- 24
app/src/main/res/layout/activity_mine_info.xml View File

@ -5,13 +5,14 @@
android:layout_height="match_parent"
android:background="@color/greyf4f4f4"
android:orientation="vertical">
<include layout="@layout/include_tool_bar"></include>
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:cardElevation="@dimen/cardview_compat_inset_shadow">
<LinearLayout
android:id="@+id/ly_personPicture"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
@ -31,8 +32,9 @@
<com.qhclh.ytzh.utils.widget.XCRoundImageView
android:id="@+id/imageView"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="fitXY"
android:layout_marginRight="20dp"
android:src="@mipmap/ic_launcher" />
<ImageView
@ -54,60 +56,100 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:id="@+id/ly_phoneNumber"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_phoneNumber"
android:layout_width="match_parent"
android:id="@+id/tv_phoneNumber_title"
android:layout_width="0dp"
android:layout_weight="1.5"
android:layout_height="47dp"
android:drawablePadding="10dp"
android:gravity="center_vertical"
android:paddingLeft="12dp"
android:paddingRight="12dp"
android:text="我的手机"
android:drawableRight="@drawable/more_icon"
android:textSize="@dimen/text_size_18" />
<TextView
android:id="@+id/tv_phoneNumber"
android:layout_width="0dp"
android:layout_height="47dp"
android:layout_gravity="right"
android:layout_weight="3"
android:drawablePadding="10dp"
android:drawableRight="@drawable/more_icon"
android:gravity="right|center_vertical"
android:paddingLeft="12dp"
android:paddingRight="12dp"
android:textSize="@dimen/text_size_18" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="2px"
android:background="#dbdbdb" />
<LinearLayout
android:id="@+id/ly_sex"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_sex_title"
android:layout_width="0dp"
android:layout_weight="1.5"
android:layout_height="47dp"
android:gravity="center_vertical"
android:paddingLeft="12dp"
android:text="性别"
android:textSize="@dimen/text_size_18" />
<TextView
android:id="@+id/tv_sex"
android:layout_width="match_parent"
android:layout_width="0dp"
android:layout_weight="3"
android:layout_height="47dp"
android:drawablePadding="10dp"
android:gravity="center_vertical"
android:layout_gravity="right"
android:gravity="right|center_vertical"
android:drawableRight="@drawable/more_icon"
android:paddingLeft="12dp"
android:paddingRight="12dp"
android:text="性别"
android:textSize="@dimen/text_size_18" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="2px"
android:background="#dbdbdb" />
<View
android:layout_width="match_parent"
android:layout_height="2px"
android:background="#dbdbdb" />
<LinearLayout
android:id="@+id/ly_birthday"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_birthday"
android:layout_width="match_parent"
android:id="@+id/tv_birthday_title"
android:layout_width="0dp"
android:layout_weight="1.5"
android:layout_height="47dp"
android:drawablePadding="10dp"
android:drawableRight="@drawable/more_icon"
android:gravity="center_vertical"
android:paddingLeft="12dp"
android:paddingRight="12dp"
android:text="生日"
android:textSize="@dimen/text_size_18" />
<TextView
android:id="@+id/tv_birthday"
android:layout_width="0dp"
android:layout_weight="3"
android:layout_height="47dp"
android:drawablePadding="10dp"
android:drawableRight="@drawable/more_icon"
android:gravity="right|center_vertical"
android:paddingLeft="12dp"
android:paddingRight="12dp"
android:textSize="@dimen/text_size_18" />
</LinearLayout>
</LinearLayout>
</android.support.v7.widget.CardView>
</LinearLayout>
</LinearLayout>

+ 2
- 2
app/src/main/res/layout/activity_setting.xml View File

@ -5,7 +5,7 @@
android:layout_height="match_parent"
android:background="@color/greyf4f4f4"
android:orientation="vertical">
<include layout="@layout/include_tool_bar"></include>
<android.support.v7.widget.CardView
android:layout_width="match_parent"
@ -37,7 +37,7 @@
android:background="#dbdbdb" />
<TextView
android:id="@+id/tv_sex"
android:id="@+id/tv_logout"
android:layout_width="match_parent"
android:layout_height="47dp"
android:drawablePadding="10dp"


+ 2
- 1
app/src/main/res/values/colors.xml View File

@ -7,7 +7,8 @@
<!-- 各种控件默认选中颜色-->
<color name="colorAccent">#0b9343</color>
<color name="ui_green">#FF16BB8E</color>
<color name="ui_deep_green">#FF108D6C</color>
<color name="grey999">#999999</color>
<color name="greyeee">#EEEEEE</color>
<color name="red">#E3383B</color>


+ 13
- 0
app/src/main/res/values/styles.xml View File

@ -62,6 +62,19 @@
<item name="android:textSize">@dimen/tab_text_size</item>
</style>
<style name="MyDialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@drawable/dialog_basic_data_bg</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowCloseOnTouchOutside">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />


+ 3
- 1
build.gradle View File

@ -6,7 +6,8 @@ buildscript {
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.2'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
classpath 'com.jakewharton:butterknife-gradle-plugin:8.5.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
@ -15,6 +16,7 @@ buildscript {
allprojects {
repositories {
jcenter()
maven { url "https://jitpack.io" }
}
}


Loading…
Cancel
Save