Commit eb393ed0 authored by linfeng's avatar linfeng

Merge branch 'dev_im' of http://113.105.137.151:22280/lify/rvapp into master-video

parents 37ceac3b 54546307
...@@ -53,8 +53,8 @@ dependencies { ...@@ -53,8 +53,8 @@ dependencies {
api project(path: ':Utils') api project(path: ':Utils')
//鲁班图片压缩 https://github.com/Curzibn/Luban //鲁班图片压缩 https://github.com/Curzibn/Luban
api 'top.zibin:Luban:1.1.8' api 'top.zibin:Luban:1.1.8'
//权限申请 https://github.com/googlesamples/easypermissions // //权限申请 https://github.com/googlesamples/easypermissions
api 'pub.devrel:easypermissions:2.0.0' // api 'pub.devrel:easypermissions:2.0.0'
//Glide //Glide
api "com.github.bumptech.glide:glide:$rootProject.ext.glideVersion" api "com.github.bumptech.glide:glide:$rootProject.ext.glideVersion"
......
...@@ -8,8 +8,8 @@ android { ...@@ -8,8 +8,8 @@ android {
minSdkVersion rootProject.ext.minSdkVersion minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion
flavorDimensions "default" flavorDimensions "default"
versionCode 146 versionCode 153
versionName "1.4.6" versionName "1.5.3"
multiDexEnabled true multiDexEnabled true
......
package com.xxfc.rv; package com.xxfc.rv;
import android.Manifest;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.app.Dialog;
import android.app.Notification; import android.app.Notification;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.content.ServiceConnection; import android.content.ServiceConnection;
...@@ -21,10 +18,8 @@ import android.support.annotation.Nullable; ...@@ -21,10 +18,8 @@ import android.support.annotation.Nullable;
import android.support.v4.content.ContextCompat; import android.support.v4.content.ContextCompat;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.view.Gravity;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.View; import android.view.View;
import android.view.WindowManager;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
...@@ -58,16 +53,11 @@ import com.rv.component.utils.LogUtil; ...@@ -58,16 +53,11 @@ import com.rv.component.utils.LogUtil;
import com.rv.component.utils.RvCache; import com.rv.component.utils.RvCache;
import com.rv.home.rv.module.ApiConfig; import com.rv.home.rv.module.ApiConfig;
import com.ruiwenliu.wrapper.base.presenter.CommonPresenter; import com.ruiwenliu.wrapper.base.presenter.CommonPresenter;
import com.rv.home.rv.module.ui.login.LoginRvActivity;
import com.rv.home.rv.module.ui.main.home.HomeFragment; import com.rv.home.rv.module.ui.main.home.HomeFragment;
import com.rv.home.rv.module.ui.main.home.bean.EffectiveTimeBean; import com.rv.home.rv.module.ui.main.home.bean.EffectiveTimeBean;
import com.rv.im.Constants;
import com.rv.im.ImService; import com.rv.im.ImService;
import com.rv.im.ImSetting; import com.rv.im.ImSetting;
import com.rv.im.broadcast.RemoteReceiver;
import com.rv.im.call.AudioOrVideoController; import com.rv.im.call.AudioOrVideoController;
import com.rv.im.mvp.view.IChatView;
import com.rv.im.util.Md5Util;
import com.rv.rvmine.MineFragment; import com.rv.rvmine.MineFragment;
import com.rv.share.WebViewActivity; import com.rv.share.WebViewActivity;
import com.rv.share.view.PromotionDialog; import com.rv.share.view.PromotionDialog;
...@@ -75,7 +65,6 @@ import com.rv.tourism.R2; ...@@ -75,7 +65,6 @@ import com.rv.tourism.R2;
import com.rv.tourism.TourismFragment; import com.rv.tourism.TourismFragment;
import com.rv.version.bean.VersionCheckBean; import com.rv.version.bean.VersionCheckBean;
import com.rv.version.receiver.UpdateAppReceiver; import com.rv.version.receiver.UpdateAppReceiver;
import com.rv.version.util.DownloadAppUtils;
import com.rv.version.util.UpdateAppUtils; import com.rv.version.util.UpdateAppUtils;
import com.xxfc.discovery.DiscoveryFragment; import com.xxfc.discovery.DiscoveryFragment;
import com.xxfc.discovery.api.DiscoveryApi; import com.xxfc.discovery.api.DiscoveryApi;
...@@ -95,13 +84,10 @@ import java.util.Map; ...@@ -95,13 +84,10 @@ import java.util.Map;
import butterknife.BindView; import butterknife.BindView;
import butterknife.OnClick; import butterknife.OnClick;
import cn.jpush.android.api.BasicPushNotificationBuilder; import cn.jpush.android.api.BasicPushNotificationBuilder;
import cn.jpush.android.api.CustomPushNotificationBuilder;
import cn.jpush.android.api.JPushInterface; import cn.jpush.android.api.JPushInterface;
import pub.devrel.easypermissions.AppSettingsDialog;
import pub.devrel.easypermissions.EasyPermissions;
public class MainActivity extends BaseActivity<CommonPresenter> implements EasyPermissions.PermissionCallbacks { public class MainActivity extends BaseActivity<CommonPresenter>{
private static final String TAG = MainActivity.class.getSimpleName(); private static final String TAG = MainActivity.class.getSimpleName();
...@@ -149,8 +135,8 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements EasyP ...@@ -149,8 +135,8 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements EasyP
private String imPassword; private String imPassword;
private String[] permissions = new String[]{android.Manifest.permission.READ_PHONE_STATE, android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.WRITE_EXTERNAL_STORAGE, android.Manifest.permission.READ_EXTERNAL_STORAGE, private String[] permissions = new String[]{android.Manifest.permission.READ_PHONE_STATE,
android.Manifest.permission.CAMERA, android.Manifest.permission.RECORD_AUDIO, Manifest.permission.CALL_PHONE}; android.Manifest.permission.CAMERA, android.Manifest.permission.RECORD_AUDIO, android.Manifest.permission.CALL_PHONE};
public static Intent getIntent(Context context) { public static Intent getIntent(Context context) {
return new Intent(context, MainActivity.class); return new Intent(context, MainActivity.class);
...@@ -167,18 +153,8 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements EasyP ...@@ -167,18 +153,8 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements EasyP
StatusBarUtil.setRootViewFitsSystemWindows(mActivity, false); StatusBarUtil.setRootViewFitsSystemWindows(mActivity, false);
AudioOrVideoController.init(getApplicationContext(), logoutListener); AudioOrVideoController.init(getApplicationContext(), logoutListener);
EventBus.getDefault().register(this); EventBus.getDefault().register(this);
checkPermissions();
} }
/********
* 检查所有的权限
*/
private void checkPermissions() {
if (!EasyPermissions.hasPermissions(this, permissions)) {
EasyPermissions.requestPermissions(this, "App正常使用,需要以下权限", IChatView.REQUEST_PERMISSION_FILE, permissions);
return;
}
}
@Override @Override
protected void initView(Bundle savedInstanceState, TitleView titleView, Intent intent) { protected void initView(Bundle savedInstanceState, TitleView titleView, Intent intent) {
...@@ -449,29 +425,9 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements EasyP ...@@ -449,29 +425,9 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements EasyP
} else { } else {
Toast.makeText(getApplicationContext(), "授权失败,无法下载最新App", Toast.LENGTH_SHORT).show(); Toast.makeText(getApplicationContext(), "授权失败,无法下载最新App", Toast.LENGTH_SHORT).show();
} }
} else {
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
} }
} }
@Override
public void onPermissionsGranted(int requestCode, @NonNull List<String> perms) {
Log.d(TAG, "授权成功");
}
@Override
public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) {
Toast.makeText(this, "用户授权失败", Toast.LENGTH_SHORT).show();
if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
new AppSettingsDialog.Builder(this).
setTitle("需要权限")
.setRationale("如果没有这些权限,此应用程序可能无法正常工作,是否打开设置修改该应用权限")
.build().show();
}
}
@Override @Override
public boolean dispatchKeyEvent(KeyEvent event) { public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) { if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
......
...@@ -7,6 +7,9 @@ import android.os.Bundle; ...@@ -7,6 +7,9 @@ import android.os.Bundle;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.text.TextUtils; import android.text.TextUtils;
import android.view.View; import android.view.View;
import android.widget.Toast;
import com.base.utils.tools.android.NetworkUtil;
import com.ruiwenliu.wrapper.SPConstance; import com.ruiwenliu.wrapper.SPConstance;
import com.ruiwenliu.wrapper.base.BaseActivity; import com.ruiwenliu.wrapper.base.BaseActivity;
import com.ruiwenliu.wrapper.base.BaseBean; import com.ruiwenliu.wrapper.base.BaseBean;
...@@ -20,7 +23,9 @@ import com.rv.im.AppConfig; ...@@ -20,7 +23,9 @@ import com.rv.im.AppConfig;
import com.rv.im.bean.ImConfig; import com.rv.im.bean.ImConfig;
import com.rv.im.bean.ImConfigBean; import com.rv.im.bean.ImConfigBean;
import com.yuyife.okgo.OkGoUtil; import com.yuyife.okgo.OkGoUtil;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import io.reactivex.Flowable; import io.reactivex.Flowable;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull; import io.reactivex.annotations.NonNull;
...@@ -30,6 +35,10 @@ import io.reactivex.functions.Consumer; ...@@ -30,6 +35,10 @@ import io.reactivex.functions.Consumer;
public class WelcomeActivity extends BaseActivity<CommonPresenter> { public class WelcomeActivity extends BaseActivity<CommonPresenter> {
private Disposable mDisposable = null; private Disposable mDisposable = null;
private boolean isImInitOk = false;
private boolean isInterval = false;
@Override @Override
public void onShowResult(int requestType, BaseBean result) { public void onShowResult(int requestType, BaseBean result) {
if (requestType == 0) { if (requestType == 0) {
...@@ -37,13 +46,18 @@ public class WelcomeActivity extends BaseActivity<CommonPresenter> { ...@@ -37,13 +46,18 @@ public class WelcomeActivity extends BaseActivity<CommonPresenter> {
ImConfig config; ImConfig config;
if (bean != null && bean.resultCode == 1 && ((ImConfigBean) result).getData() != null) { if (bean != null && bean.resultCode == 1 && ((ImConfigBean) result).getData() != null) {
LogUtil.e("zq", "获取网络配置成功,使用服务端返回的配置并更新本地配置"); LogUtil.e("zq", "获取网络配置成功,使用服务端返回的配置并更新本地配置");
isImInitOk = true;
config = bean.getData(); config = bean.getData();
AppConfig appConfig = AppConfig.initConfig(config); AppConfig appConfig = AppConfig.initConfig(config);
RvCache.getInstance().save(appConfig, CacheEnum.IM_CONFIG); RvCache.getInstance().save(appConfig, CacheEnum.IM_CONFIG);
if (isInterval && !isFinishing()) {
go();
}
} }
} }
} }
@Override @Override
protected int setLayout() { protected int setLayout() {
return R.layout.rv_act_weclome; return R.layout.rv_act_weclome;
...@@ -52,8 +66,17 @@ public class WelcomeActivity extends BaseActivity<CommonPresenter> { ...@@ -52,8 +66,17 @@ public class WelcomeActivity extends BaseActivity<CommonPresenter> {
@Override @Override
protected void initView(Bundle savedInstanceState, TitleView titleView, Intent intent) { protected void initView(Bundle savedInstanceState, TitleView titleView, Intent intent) {
showTitle(false);//隐藏菜单栏 showTitle(false);//隐藏菜单栏
interval();
AppConfig appConfig = (AppConfig) RvCache.getInstance().get(CacheEnum.IM_CONFIG);
if (appConfig == null) {
if (!NetworkUtil.isNetworkAvailable(getApplicationContext())) {
Toast.makeText(getApplicationContext(), "网络异常,im初始化失败,请退出重进", Toast.LENGTH_SHORT).show();
return;
}
} else {
isImInitOk = true;
}
interval();
LogUtil.d("start"); LogUtil.d("start");
} }
...@@ -78,34 +101,22 @@ public class WelcomeActivity extends BaseActivity<CommonPresenter> { ...@@ -78,34 +101,22 @@ public class WelcomeActivity extends BaseActivity<CommonPresenter> {
*/ */
private void interval() { private void interval() {
mDisposable = Flowable.interval(2, TimeUnit.SECONDS) mDisposable = Flowable.interval(2, TimeUnit.SECONDS)
.doOnNext(new Consumer<Long>() { .doOnNext(aLong -> {
@Override
public void accept(@NonNull Long aLong) throws Exception {
}
}) })
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<Long>() { .subscribe(aLong -> {
@Override isInterval = true;
public void accept(@NonNull Long aLong) { try {
try { String token = Cookie.getStringValue(getApplicationContext(), SPConstance.USER_JSON_TOKEN, "");
String token = Cookie.getStringValue(getApplicationContext(), SPConstance.USER_JSON_TOKEN, ""); String tokenTime = Cookie.getStringValue(getApplicationContext(), SPConstance.USER_JSON_TOKE_TIME, "");
String tokenTime = Cookie.getStringValue(getApplicationContext(), SPConstance.USER_JSON_TOKE_TIME, ""); if (!TextUtils.isEmpty(token)) {
if (!TextUtils.isEmpty(token)) { OkGoUtil.setToken(token, tokenTime);
OkGoUtil.setToken(token, tokenTime);
}
} catch (Exception e) {
e.printStackTrace();
}
SharedPreferences preferences = getSharedPreferences("first_open", MODE_PRIVATE);
if (preferences.getBoolean("first", true)) {
preferences.edit().putBoolean("first", false).commit();
startActivity(GuideActivity.getIntent(mActivity));
} else {
startActivity(MainActivity.getIntent(mActivity));
} }
mDisposable.dispose(); } catch (Exception e) {
finish(); e.printStackTrace();
}
if (isImInitOk) {
go();
} }
}); });
...@@ -120,6 +131,18 @@ public class WelcomeActivity extends BaseActivity<CommonPresenter> { ...@@ -120,6 +131,18 @@ public class WelcomeActivity extends BaseActivity<CommonPresenter> {
} }
} }
private void go() {
SharedPreferences preferences = getSharedPreferences("first_open", MODE_PRIVATE);
if (preferences.getBoolean("first", true)) {
preferences.edit().putBoolean("first", false).commit();
startActivity(GuideActivity.getIntent(mActivity));
} else {
startActivity(MainActivity.getIntent(mActivity));
}
mDisposable.dispose();
finish();
}
@Override @Override
protected void onCreate(@Nullable Bundle savedInstanceState) { protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
......
This diff is collapsed.
package com.ruiwenliu.wrapper.base;
import android.os.Bundle;
import com.ruiwenliu.wrapper.presenter.MvpPresenter;
public abstract class BaseLazyFragment<P extends MvpPresenter> extends BaseFragment<P> {
@Override
public int getViewLayout() {
return 0;
}
@Override
protected void initView(Bundle savedInstanceState) {
}
@Override
protected void loadData(Bundle savedInstanceState) {
}
@Override
public void onShowResult(int requestType, BaseBean result) {
}
}
...@@ -34,6 +34,8 @@ public class UserInfoBean extends BaseBean implements Serializable { ...@@ -34,6 +34,8 @@ public class UserInfoBean extends BaseBean implements Serializable {
private String icon ; private String icon ;
private String bigIcon ;
//用户id //用户id
private Integer userid; private Integer userid;
//imid //imid
...@@ -291,5 +293,13 @@ public class UserInfoBean extends BaseBean implements Serializable { ...@@ -291,5 +293,13 @@ public class UserInfoBean extends BaseBean implements Serializable {
public void setPositionName(String positionName) { public void setPositionName(String positionName) {
this.positionName = positionName; this.positionName = positionName;
} }
public String getBigIcon() {
return bigIcon;
}
public void setBigIcon(String bigIcon) {
this.bigIcon = bigIcon;
}
} }
} }
package com.ruiwenliu.wrapper.http; package com.ruiwenliu.wrapper.http;
import android.os.Build;
import android.os.Environment; import android.os.Environment;
import com.ruiwenliu.wrapper.BuildConfig; import com.ruiwenliu.wrapper.BuildConfig;
......
This diff is collapsed.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="30dp" />
<solid android:color="#464546" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="30dp" />
<solid android:color="#E7C48B" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="30dp" />
<solid android:color="#AAAEBA" />
</shape>
\ No newline at end of file
...@@ -54,8 +54,6 @@ dependencies { ...@@ -54,8 +54,6 @@ dependencies {
implementation 'top.zibin:Luban:1.1.3' implementation 'top.zibin:Luban:1.1.3'
implementation project(':plugin_member') implementation project(':plugin_member')
api project(':plugin_version') api project(':plugin_version')
//动态权限申请库
implementation 'pub.devrel:easypermissions:1.3.0'
implementation 'com.alibaba:fastjson:1.2.21' implementation 'com.alibaba:fastjson:1.2.21'
api project(':plugin_share') api project(':plugin_share')
api project(':plugin_coupon') api project(':plugin_coupon')
......
package com.rv.rvmine.personal; package com.rv.rvmine.personal;
import android.Manifest; import android.Manifest;
import android.annotation.SuppressLint;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.text.TextUtils; import android.text.TextUtils;
...@@ -21,6 +23,7 @@ import com.frame.base.url.Constance; ...@@ -21,6 +23,7 @@ import com.frame.base.url.Constance;
import com.frame.rv.config.RvFrameConfig; import com.frame.rv.config.RvFrameConfig;
import com.ruiwenliu.wrapper.util.ViewHolder; import com.ruiwenliu.wrapper.util.ViewHolder;
import com.ruiwenliu.wrapper.util.glide.GlideManager; import com.ruiwenliu.wrapper.util.glide.GlideManager;
import com.ruiwenliu.wrapper.util.permission.RxPermission;
import com.rv.home.rv.module.ApiConfig; import com.rv.home.rv.module.ApiConfig;
import com.rv.component.dialog.PickerDialog; import com.rv.component.dialog.PickerDialog;
import com.rv.home.rv.module.ui.main.home.bean.ImageUploadBean; import com.rv.home.rv.module.ui.main.home.bean.ImageUploadBean;
...@@ -41,11 +44,10 @@ import java.util.Map; ...@@ -41,11 +44,10 @@ import java.util.Map;
import butterknife.BindView; import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
import butterknife.OnClick; import butterknife.OnClick;
import io.reactivex.functions.Consumer;
import okhttp3.MediaType; import okhttp3.MediaType;
import okhttp3.MultipartBody; import okhttp3.MultipartBody;
import okhttp3.RequestBody; import okhttp3.RequestBody;
import pub.devrel.easypermissions.AppSettingsDialog;
import pub.devrel.easypermissions.EasyPermissions;
import top.zibin.luban.Luban; import top.zibin.luban.Luban;
import top.zibin.luban.OnCompressListener; import top.zibin.luban.OnCompressListener;
...@@ -53,7 +55,7 @@ import top.zibin.luban.OnCompressListener; ...@@ -53,7 +55,7 @@ import top.zibin.luban.OnCompressListener;
* 实名认证 * 实名认证
*/ */
@Route(path = Constance.ACTIVITY_URL_IDCARDCERTIFICATION) @Route(path = Constance.ACTIVITY_URL_IDCARDCERTIFICATION)
public class IDCardCertificationActivity extends BaseStatusActivity<PickerPresenter> implements EasyPermissions.PermissionCallbacks { public class IDCardCertificationActivity extends BaseStatusActivity<PickerPresenter> {
@BindView(R2.id.et_name) @BindView(R2.id.et_name)
EditText etName; EditText etName;
...@@ -235,70 +237,43 @@ public class IDCardCertificationActivity extends BaseStatusActivity<PickerPresen ...@@ -235,70 +237,43 @@ public class IDCardCertificationActivity extends BaseStatusActivity<PickerPresen
}.show(); }.show();
} }
/** @SuppressLint("CheckResult")
* 打开相机和相册
*
* @param type 1、相机2、相册
* <p>
* 此处方法不奏效
*/
// @SuppressLint("CheckResult")
// private void processPicker(final int type) {
// /**
// * 6.0以上手机做权限处理
// */
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
// new RxPermission(mActivity).request(
// new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,
// Manifest.permission.CAMERA}).subscribe(new Consumer<Boolean>() {
// @Override
// public void accept(Boolean aBoolean) throws Exception {
// if (aBoolean == true) {
// switch (type) {
// case 1001:
// mPresenter.openCamera(false);
// break;
// case 1002:
// mPresenter.openAlbum(false);
// break;
// }
//
// }
// }
// });
// } else {
// switch (type) {
// case 1001:
// mPresenter.openCamera(false);
// break;
// case 1002:
// mPresenter.openAlbum(false);
// break;
// }
// }
// }
private String[] cameraPermissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE};
private void processPicker() { private void processPicker() {
if (!EasyPermissions.hasPermissions(this, cameraPermissions)) { /**
EasyPermissions.requestPermissions(this, "拍照需要此权限,否则无法正常使用", 1, cameraPermissions); * 6.0以上手机做权限处理
return; */
} if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
switch (typeCamera) { new RxPermission(mActivity).request(
case 1001: Manifest.permission.WRITE_EXTERNAL_STORAGE,
mPresenter.openCamera(false); Manifest.permission.CAMERA).subscribe(new Consumer<Boolean>() {
break; @Override
case 1002: public void accept(Boolean aBoolean) throws Exception {
mPresenter.openAlbum(false); if (aBoolean == true) {
break; switch (typeCamera) {
case 1001:
mPresenter.openCamera(false);
break;
case 1002:
mPresenter.openAlbum(false);
break;
}
} else {
Toast.makeText(getApplicationContext(), "用户授权失败", Toast.LENGTH_SHORT).show();
}
}
});
} else {
switch (typeCamera) {
case 1001:
mPresenter.openCamera(false);
break;
case 1002:
mPresenter.openAlbum(false);
break;
}
} }
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
} }
/** /**
...@@ -351,23 +326,6 @@ public class IDCardCertificationActivity extends BaseStatusActivity<PickerPresen ...@@ -351,23 +326,6 @@ public class IDCardCertificationActivity extends BaseStatusActivity<PickerPresen
return headMap; return headMap;
} }
@Override
public void onPermissionsGranted(int requestCode, @NonNull List<String> perms) {
processPicker();
}
@Override
public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) {
Toast.makeText(this, "用户授权失败", Toast.LENGTH_SHORT).show();
if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
new AppSettingsDialog.Builder(this).
setTitle("需要权限")
.setRationale("如果没有这些权限,此应用程序可能无法正常工作,是否打开设置修改该应用权限")
.build().show();
}
}
private class Verified { private class Verified {
private String name; private String name;
private String idNumber; private String idNumber;
......
...@@ -63,7 +63,6 @@ dependencies { ...@@ -63,7 +63,6 @@ dependencies {
implementation "com.google.code.gson:gson:$rootProject.ext.gsonVersion" implementation "com.google.code.gson:gson:$rootProject.ext.gsonVersion"
implementation 'cc.aoeiuv020:imaging:1.0' implementation 'cc.aoeiuv020:imaging:1.0'
implementation 'com.android.support:design:28.0.0' implementation 'com.android.support:design:28.0.0'
implementation 'pub.devrel:easypermissions:1.3.0'
implementation 'top.zibin:Luban:1.1.3' implementation 'top.zibin:Luban:1.1.3'
// 定制的jitsi, // 定制的jitsi,
api files('libs/jitsi-meet-sdk-1.16.0-2.aar') api files('libs/jitsi-meet-sdk-1.16.0-2.aar')
......
...@@ -4,6 +4,7 @@ import android.Manifest; ...@@ -4,6 +4,7 @@ import android.Manifest;
import android.app.Dialog; import android.app.Dialog;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
...@@ -29,6 +30,7 @@ import android.widget.Toast; ...@@ -29,6 +30,7 @@ import android.widget.Toast;
import com.ruiwenliu.wrapper.base.BaseBean; import com.ruiwenliu.wrapper.base.BaseBean;
import com.ruiwenliu.wrapper.base.BaseStatusActivity; import com.ruiwenliu.wrapper.base.BaseStatusActivity;
import com.ruiwenliu.wrapper.base.presenter.CommonPresenter; import com.ruiwenliu.wrapper.base.presenter.CommonPresenter;
import com.ruiwenliu.wrapper.util.permission.RxPermission;
import com.ruiwenliu.wrapper.weight.TitleView; import com.ruiwenliu.wrapper.weight.TitleView;
import com.rv.im.adapter.ChatContentAdapter; import com.rv.im.adapter.ChatContentAdapter;
import com.rv.im.audio.IMRecordController; import com.rv.im.audio.IMRecordController;
...@@ -55,10 +57,7 @@ import java.io.File; ...@@ -55,10 +57,7 @@ import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import pub.devrel.easypermissions.AppSettingsDialog; public class ChatActivity extends BaseStatusActivity<CommonPresenter> implements IChatView, ChatMessageListener, View.OnClickListener, RecordListener {
import pub.devrel.easypermissions.EasyPermissions;
public class ChatActivity extends BaseStatusActivity<CommonPresenter> implements EasyPermissions.PermissionCallbacks, IChatView, ChatMessageListener, View.OnClickListener, RecordListener {
private ImageButton voiceImgBtn; private ImageButton voiceImgBtn;
private ImageButton ibKeyword; private ImageButton ibKeyword;
...@@ -84,9 +83,6 @@ public class ChatActivity extends BaseStatusActivity<CommonPresenter> implements ...@@ -84,9 +83,6 @@ public class ChatActivity extends BaseStatusActivity<CommonPresenter> implements
private int startPosition; private int startPosition;
private int endPosition; private int endPosition;
private String[] recordPermissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.RECORD_AUDIO, Manifest.permission.READ_EXTERNAL_STORAGE};
private String[] callPermissions = {Manifest.permission.RECORD_AUDIO, Manifest.permission.CALL_PHONE, Manifest.permission.CAMERA};
private ChatContentAdapter.OnClickItemListener clickItemListener = new ChatContentAdapter.OnClickItemListener() { private ChatContentAdapter.OnClickItemListener clickItemListener = new ChatContentAdapter.OnClickItemListener() {
@Override @Override
public void onClick(int resId, ChatMessage message) { public void onClick(int resId, ChatMessage message) {
...@@ -320,17 +316,34 @@ public class ChatActivity extends BaseStatusActivity<CommonPresenter> implements ...@@ -320,17 +316,34 @@ public class ChatActivity extends BaseStatusActivity<CommonPresenter> implements
isCamera = true; isCamera = true;
presenter.clickPicPicker(isCamera); presenter.clickPicPicker(isCamera);
} else if (id == R.id.voice_img_btn) { } else if (id == R.id.voice_img_btn) {
// 判断是否有录音与储存读写的权限
if (!EasyPermissions.hasPermissions(getApplicationContext(), recordPermissions)) { /**
EasyPermissions.requestPermissions(ChatActivity.this, "录音需要此权限,否则无法正常使用", REQUEST_PERMISSION_AUDIO, recordPermissions); * 6.0以上手机做权限处理
return; */
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
new RxPermission(mActivity).request(
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.RECORD_AUDIO,
Manifest.permission.READ_EXTERNAL_STORAGE).subscribe(aBoolean -> {
if (aBoolean == true) {
changeChatFaceView(false);
chatEdit.setVisibility(View.GONE);
recordBtn.setVisibility(View.VISIBLE);
ibKeyword.setVisibility(View.VISIBLE);
voiceImgBtn.setVisibility(View.GONE);
closeKeyboard();
} else {
Toast.makeText(getApplicationContext(), "用户授权失败", Toast.LENGTH_SHORT).show();
}
});
} else {
changeChatFaceView(false);
chatEdit.setVisibility(View.GONE);
recordBtn.setVisibility(View.VISIBLE);
ibKeyword.setVisibility(View.VISIBLE);
voiceImgBtn.setVisibility(View.GONE);
closeKeyboard();
} }
changeChatFaceView(false);
chatEdit.setVisibility(View.GONE);
recordBtn.setVisibility(View.VISIBLE);
ibKeyword.setVisibility(View.VISIBLE);
voiceImgBtn.setVisibility(View.GONE);
closeKeyboard();
} else if (id == R.id.ib_keyword) { } else if (id == R.id.ib_keyword) {
changeChatFaceView(false); changeChatFaceView(false);
chatEdit.setVisibility(View.VISIBLE); chatEdit.setVisibility(View.VISIBLE);
...@@ -342,18 +355,37 @@ public class ChatActivity extends BaseStatusActivity<CommonPresenter> implements ...@@ -342,18 +355,37 @@ public class ChatActivity extends BaseStatusActivity<CommonPresenter> implements
presenter.clickFile(); presenter.clickFile();
} else if (id == R.id.tv_vilte) { } else if (id == R.id.tv_vilte) {
callType = 1; callType = 1;
if (!EasyPermissions.hasPermissions(getApplicationContext(), callPermissions)) {
EasyPermissions.requestPermissions(ChatActivity.this, "通话需要此权限,否则无法正常使用", REQUEST_PERMISSION_CALL, recordPermissions); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
return; new RxPermission(mActivity).request(
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.RECORD_AUDIO,
Manifest.permission.READ_EXTERNAL_STORAGE).subscribe(aBoolean -> {
if (aBoolean == true) {
presenter.realDial(callType, null);
} else {
Toast.makeText(getApplicationContext(), "用户授权失败", Toast.LENGTH_SHORT).show();
}
});
} else {
presenter.realDial(callType, null);
} }
presenter.realDial(callType, null);
} else if (id == R.id.tv_video) { } else if (id == R.id.tv_video) {
callType = 2; callType = 2;
if (!EasyPermissions.hasPermissions(getApplicationContext(), callPermissions)) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
EasyPermissions.requestPermissions(ChatActivity.this, "通话需要此权限,否则无法正常使用", REQUEST_PERMISSION_CALL, recordPermissions); new RxPermission(mActivity).request(
return; Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.RECORD_AUDIO,
Manifest.permission.READ_EXTERNAL_STORAGE).subscribe(aBoolean -> {
if (aBoolean == true) {
presenter.realDial(callType, null);
} else {
Toast.makeText(getApplicationContext(), "用户授权失败", Toast.LENGTH_SHORT).show();
}
});
} else {
presenter.realDial(callType, null);
} }
presenter.realDial(callType, null);
} else if (id == R.id.emotion_btn) { } else if (id == R.id.emotion_btn) {
if (isFaceShown()) {// 表情布局在显示,那么点击则是隐藏表情,显示键盘 if (isFaceShown()) {// 表情布局在显示,那么点击则是隐藏表情,显示键盘
// showKeyboard(); // showKeyboard();
...@@ -462,40 +494,6 @@ public class ChatActivity extends BaseStatusActivity<CommonPresenter> implements ...@@ -462,40 +494,6 @@ public class ChatActivity extends BaseStatusActivity<CommonPresenter> implements
private boolean isCamera = false; private boolean isCamera = false;
private InputMethodManager mInputManager; private InputMethodManager mInputManager;
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
}
@Override
public void onPermissionsGranted(int requestCode, @NonNull List<String> perms) {
if (requestCode == REQUEST_PERMISSION_PHOTO) {
presenter.clickPicPicker(isCamera);
} else if (requestCode == REQUEST_PERMISSION_AUDIO) {
chatEdit.setVisibility(View.GONE);
recordBtn.setVisibility(View.VISIBLE);
ibKeyword.setVisibility(View.VISIBLE);
voiceImgBtn.setVisibility(View.GONE);
} else if (requestCode == REQUEST_PERMISSION_FILE) {
presenter.clickFile();
} else if (requestCode == REQUEST_PERMISSION_CALL) {
presenter.realDial(callType, null);
}
}
@Override
public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) {
Toast.makeText(this, "用户授权失败", Toast.LENGTH_SHORT).show();
if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
new AppSettingsDialog.Builder(this).
setTitle("需要权限")
.setRationale("如果没有这些权限,此应用程序可能无法正常工作,是否打开设置修改该应用权限")
.build().show();
}
}
@Override @Override
public void onDestroy() { public void onDestroy() {
super.onDestroy(); super.onDestroy();
......
package com.rv.im; package com.rv.im;
import android.app.ActivityManager;
import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.Toast; import android.widget.Toast;
...@@ -20,21 +16,17 @@ import com.ruiwenliu.wrapper.weight.refresh.SimpleRefreshLayout; ...@@ -20,21 +16,17 @@ import com.ruiwenliu.wrapper.weight.refresh.SimpleRefreshLayout;
import com.ruiwenliu.wrapper.weight.refresh.SimpleRefreshView; import com.ruiwenliu.wrapper.weight.refresh.SimpleRefreshView;
import com.rv.im.adapter.CustomerListAdapter; import com.rv.im.adapter.CustomerListAdapter;
import com.rv.im.bean.CustomersBean; import com.rv.im.bean.CustomersBean;
import com.rv.im.db.service.ChatConversationServiceImp;
import com.rv.im.db.service.ChatMessageServiceImp; import com.rv.im.db.service.ChatMessageServiceImp;
import com.rv.im.db.service.CustomerServiceImp; import com.rv.im.db.service.CustomerServiceImp;
import com.rv.im.db.service.ICustomerService; import com.rv.im.db.service.ICustomerService;
import com.rv.im.db.table.ChatConversation;
import com.rv.im.db.table.ChatMessage; import com.rv.im.db.table.ChatMessage;
import com.rv.im.db.table.Customer; import com.rv.im.db.table.Customer;
import com.rv.im.util.ServiceUtils; import com.rv.im.util.ServiceUtils;
import com.rv.im.xmpp.ListenerManager; import com.rv.im.xmpp.ListenerManager;
import com.rv.im.xmpp.listener.AuthStateListener;
import com.rv.im.xmpp.listener.ChatMessageListener; import com.rv.im.xmpp.listener.ChatMessageListener;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Iterator;
import java.util.List; import java.util.List;
public class CustomerListActivity extends BaseStatusActivity<CommonPresenter> implements SimpleRefreshLayout.OnSimpleRefreshListener, ChatMessageListener { public class CustomerListActivity extends BaseStatusActivity<CommonPresenter> implements SimpleRefreshLayout.OnSimpleRefreshListener, ChatMessageListener {
......
package com.rv.im.mvp.presenter; package com.rv.im.mvp.presenter;
import android.Manifest; import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
...@@ -11,7 +12,9 @@ import android.provider.MediaStore; ...@@ -11,7 +12,9 @@ import android.provider.MediaStore;
import android.support.v4.content.FileProvider; import android.support.v4.content.FileProvider;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.widget.Toast;
import com.ruiwenliu.wrapper.util.permission.RxPermission;
import com.rv.im.Constants; import com.rv.im.Constants;
import com.rv.im.ImSetting; import com.rv.im.ImSetting;
import com.rv.im.call.Jitsi_pre; import com.rv.im.call.Jitsi_pre;
...@@ -34,7 +37,6 @@ import java.util.Arrays; ...@@ -34,7 +37,6 @@ import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
import pub.devrel.easypermissions.EasyPermissions;
import top.zibin.luban.Luban; import top.zibin.luban.Luban;
import top.zibin.luban.OnCompressListener; import top.zibin.luban.OnCompressListener;
...@@ -79,16 +81,31 @@ public class ChatPresenterImp implements IChatPresenter { ...@@ -79,16 +81,31 @@ public class ChatPresenterImp implements IChatPresenter {
sendMessage(message); sendMessage(message);
} }
@SuppressLint("CheckResult")
@Override @Override
public void clickPicPicker(boolean isCamera) { public void clickPicPicker(boolean isCamera) {
if (!EasyPermissions.hasPermissions(weakReference.get(), cameraPermissions)) {
EasyPermissions.requestPermissions((Activity) weakReference.get(), "拍照需要此权限,否则无法正常使用", IChatView.REQUEST_PERMISSION_PHOTO, cameraPermissions); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
return; new RxPermission((Activity) weakReference.get()).request(
} Manifest.permission.WRITE_EXTERNAL_STORAGE,
if (isCamera) { Manifest.permission.CAMERA,
clickCamera(); Manifest.permission.READ_EXTERNAL_STORAGE).subscribe(aBoolean -> {
if (aBoolean == true) {
if (isCamera) {
clickCamera();
} else {
openAlbum();
}
} else {
Toast.makeText(weakReference.get(), "用户授权失败", Toast.LENGTH_SHORT).show();
}
});
} else { } else {
openAlbum(); if (isCamera) {
clickCamera();
} else {
openAlbum();
}
} }
} }
...@@ -167,7 +184,7 @@ public class ChatPresenterImp implements IChatPresenter { ...@@ -167,7 +184,7 @@ public class ChatPresenterImp implements IChatPresenter {
if (!TextUtils.isEmpty(meetUrl)) { if (!TextUtils.isEmpty(meetUrl)) {
intent.putExtra("meetUrl", meetUrl); intent.putExtra("meetUrl", meetUrl);
} }
((Activity) weakReference.get()).startActivity(intent); weakReference.get().startActivity(intent);
} }
private void sendMessage(ChatMessage message) { private void sendMessage(ChatMessage message) {
...@@ -307,16 +324,25 @@ public class ChatPresenterImp implements IChatPresenter { ...@@ -307,16 +324,25 @@ public class ChatPresenterImp implements IChatPresenter {
sendMessage(message); sendMessage(message);
} }
@SuppressLint("CheckResult")
@Override @Override
public void clickFile() { public void clickFile() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
new RxPermission((Activity) weakReference.get()).request(
if (!EasyPermissions.hasPermissions(weakReference.get(), cameraPermissions)) { Manifest.permission.WRITE_EXTERNAL_STORAGE,
EasyPermissions.requestPermissions((Activity) weakReference.get(), "拍照需要此权限,否则无法正常使用", IChatView.REQUEST_PERMISSION_FILE, choiceFilePermissions); Manifest.permission.READ_EXTERNAL_STORAGE).subscribe(aBoolean -> {
return; if (aBoolean == true) {
showFileChoiceDialog();
} else {
Toast.makeText(weakReference.get(), "用户授权失败", Toast.LENGTH_SHORT).show();
}
});
} else {
showFileChoiceDialog();
} }
}
private void showFileChoiceDialog() {
SelectFileDialog dialog = new SelectFileDialog(weakReference.get(), new SelectFileDialog.OptionFileListener() { SelectFileDialog dialog = new SelectFileDialog(weakReference.get(), new SelectFileDialog.OptionFileListener() {
@Override @Override
public void option(List<File> files) { public void option(List<File> files) {
......
...@@ -4,12 +4,14 @@ import android.content.Context; ...@@ -4,12 +4,14 @@ import android.content.Context;
import android.graphics.Color; import android.graphics.Color;
import android.text.SpannableString; import android.text.SpannableString;
import android.text.Spanned; import android.text.Spanned;
import android.text.TextUtils;
import android.text.style.AbsoluteSizeSpan; import android.text.style.AbsoluteSizeSpan;
import android.text.style.ForegroundColorSpan; import android.text.style.ForegroundColorSpan;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.BaseAdapter; import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.RelativeLayout; import android.widget.RelativeLayout;
import android.widget.TextView; import android.widget.TextView;
...@@ -35,6 +37,11 @@ public class GridMemerAdapter extends BaseAdapter { ...@@ -35,6 +37,11 @@ public class GridMemerAdapter extends BaseAdapter {
this.mListener = listener; this.mListener = listener;
} }
public void setDate(List<MemberListBean.MemberCard> data) {
mData = data;
notifyDataSetChanged();
}
@Override @Override
public int getCount() { public int getCount() {
return mData.size(); return mData.size();
...@@ -61,7 +68,7 @@ public class GridMemerAdapter extends BaseAdapter { ...@@ -61,7 +68,7 @@ public class GridMemerAdapter extends BaseAdapter {
holder.tv_discount = view.findViewById(R.id.tv_discount); holder.tv_discount = view.findViewById(R.id.tv_discount);
holder.tv_free_day = view.findViewById(R.id.tv_free_day); holder.tv_free_day = view.findViewById(R.id.tv_free_day);
holder.tv_price = view.findViewById(R.id.tv_price); holder.tv_price = view.findViewById(R.id.tv_price);
holder.tv_type_icon = view.findViewById(R.id.tv_type_icon); holder.tv_type = view.findViewById(R.id.tv_type);
view.setTag(holder); view.setTag(holder);
} else { } else {
holder = (ViewHolder) view.getTag(); holder = (ViewHolder) view.getTag();
...@@ -69,30 +76,36 @@ public class GridMemerAdapter extends BaseAdapter { ...@@ -69,30 +76,36 @@ public class GridMemerAdapter extends BaseAdapter {
SpannableString s = new SpannableString("¥" + memberCard.getPrice()); SpannableString s = new SpannableString("¥" + memberCard.getPrice());
s.setSpan(new AbsoluteSizeSpan(12, true), 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); s.setSpan(new AbsoluteSizeSpan(10, true), 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
s.setSpan(new AbsoluteSizeSpan(18, true), 1, s.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); s.setSpan(new AbsoluteSizeSpan(18, true), 1, s.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
s.setSpan(new ForegroundColorSpan(Color.parseColor("#FFB74B")), 1, s.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
if (selecPosition == i) {
s.setSpan(new ForegroundColorSpan(Color.parseColor("#ffffff")), 0, s.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
} else {
s.setSpan(new ForegroundColorSpan(Color.parseColor("#999999")), 0, s.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
holder.tv_price.setText(s); holder.tv_price.setText(s);
holder.tv_discount.setText("永久" + memberCard.getDiscount() / 10 + "折租车"); holder.tv_discount.setText("永久" + memberCard.getDiscount() / 10 + "折租车");
holder.tv_free_day.setText(memberCard.getNumber() + "天免费租车"); holder.tv_free_day.setText(memberCard.getNumber() + "天免费租车");
holder.tv_type.setText(TextUtils.isEmpty(memberCard.getName()) ? " " : memberCard.getName());
holder.tv_type_icon.setText(memberCard.getName());
switch (memberCard.getLevel()) {
case 1:
holder.tv_type_icon.setBackgroundResource(R.drawable.member_icon_reg_members);
break;
case 2:
holder.tv_type_icon.setBackgroundResource(R.drawable.member_icon_gold_membership);
break;
case 3:
holder.tv_type_icon.setBackgroundResource(R.drawable.member_icon_dia_membership);
break;
}
if (selecPosition == i) { if (selecPosition == i) {
holder.rl_content.setBackgroundResource(R.drawable.shape_rv_bg_member_selected); if (i == 0) {
holder.rl_content.setBackgroundResource(R.drawable.bg_card_normal_member);
} else if (i == 1) {
holder.rl_content.setBackgroundResource(R.drawable.bg_card_gold_member);
} else if (i == 2) {
holder.rl_content.setBackgroundResource(R.drawable.bg_card_diamond_member);
}
holder.tv_type.setTextColor(Color.WHITE);
holder.tv_discount.setTextColor(Color.WHITE);
holder.tv_free_day.setTextColor(Color.WHITE);
} else { } else {
holder.rl_content.setBackgroundResource(R.drawable.shape_rv_bg_member_unselected); holder.rl_content.setBackgroundResource(R.drawable.bg_member_unselect);
holder.tv_type.setTextColor(Color.parseColor("#999999"));
holder.tv_discount.setTextColor(Color.parseColor("#999999"));
holder.tv_free_day.setTextColor(Color.parseColor("#999999"));
} }
holder.rl_content.setOnClickListener(new View.OnClickListener() { holder.rl_content.setOnClickListener(new View.OnClickListener() {
...@@ -107,10 +120,10 @@ public class GridMemerAdapter extends BaseAdapter { ...@@ -107,10 +120,10 @@ public class GridMemerAdapter extends BaseAdapter {
} }
private class ViewHolder { private class ViewHolder {
RelativeLayout rl_content; LinearLayout rl_content;
TextView tv_type;
TextView tv_price; TextView tv_price;
TextView tv_discount; TextView tv_discount;
TextView tv_free_day; TextView tv_free_day;
TextView tv_type_icon;
} }
} }
This diff is collapsed.
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!--空心框 圆角 少量红-->
<corners android:radius="@dimen/size_30" />
<solid android:color="#FFC772" />
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="@dimen/size_30" />
<solid android:color="@color/white" />
</shape>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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