Commit b14540cc by 罗翻

android 框架改版

parent b46bcea8
Showing with 2057 additions and 0 deletions
package com.dayu.bigfish;
import android.Manifest;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.Dialog;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Toast;
import com.dayu.bigfish.bean.InformBean;
import com.dayu.bigfish.managers.UserManager;
import com.dayu.bigfish.rxbus.RefreReceiveData;
import com.dayu.bigfish.rxbus.RefreshTabNum;
import com.dayu.bigfish.rxbus.RxBus;
import com.dayu.bigfish.ui.LoginActivity;
import com.dayu.bigfish.ui.MainActivity;
import com.dayu.bigfish.utils.LogUtils;
import com.dayu.bigfish.views.CustomDialog;
import com.google.gson.Gson;
import com.hyphenate.EMConnectionListener;
import com.hyphenate.EMError;
import com.hyphenate.EMMessageListener;
import com.hyphenate.chat.EMClient;
import com.hyphenate.chat.EMMessage;
import com.hyphenate.util.NetUtils;
import java.util.List;
import java.util.concurrent.TimeUnit;
import io.reactivex.Observable;
import io.reactivex.disposables.Disposable;
public class SplashActivity extends AppCompatActivity {
private static final int SDK_PERMISSION_REQUEST = 1;
int ID = 0x123;
private String str;
private String strTwo;
private Activity mActivity;
private Disposable mDisapode;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
mActivity = this;
//注册环信消息监听
EMClient.getInstance().chatManager().addMessageListener(msgListener);
//注册一个监听连接状态的listener
EMClient.getInstance().addConnectionListener(new MyConnectionListener());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {//判断当前系统的SDK版本是否大于23
if (!(checkSelfPermission(Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED)
|| !(checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)) {
requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, SDK_PERMISSION_REQUEST);
}
}
}
@Override
protected void onResume() {
super.onResume();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {//判断当前系统的SDK版本是否大于23
if ((checkSelfPermission(Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_GRANTED)
&& (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)) {
doJump();
}
} else {
doJump();
}
}
//注册监听事件
EMMessageListener msgListener = new EMMessageListener() {
@Override
public void onMessageReceived(List<EMMessage> messages) {
//收到消息
for (EMMessage list : messages) {
//异步刷新各Tab状态数量
RxBus.getDefault().post(new RefreshTabNum(0));
//打开消息列表界面
Intent intent = new Intent(SplashActivity.this, MainActivity.class);
intent.putExtra(Constants.DUMP_INDEX, 3);
PendingIntent pi = PendingIntent.getActivity(SplashActivity.this,
0, intent, 0);
str = list.getBody().toString();
str = str.substring(5);
strTwo = str.substring(0, str.length() - 1);
Gson gson = new Gson();
InformBean informBean = gson.fromJson(list.ext().toString(), InformBean.class);
//如果getFunctionType==2表示为待接单的消息,不需要通知,直接刷新待接单红点
Notification.Builder builder = new Notification.Builder(SplashActivity.this);
builder
// 设置打开通知,该通知取消
.setAutoCancel(true)
// 设置通知提示信息
.setTicker("工单有新消息")
// 设置通知的图标
.setSmallIcon(R.mipmap.logo)
// 设置通知的标题
// .setContentTitle(list.getFrom())
.setContentTitle(informBean.getTitle())
// 设置通知的内容
.setContentText(strTwo)
// 设置使用系统默认的声音、LED
.setDefaults(
Notification.DEFAULT_LIGHTS
| Notification.DEFAULT_SOUND)
// 设置通知发布时间
.setWhen(System.currentTimeMillis())
// 设置将要启动的活动
.setContentIntent(pi)
.build();
Notification notification = builder.build();
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
manager.notify(ID, notification);
}
}
@Override
public void onCmdMessageReceived(List<EMMessage> messages) {
//收到透传消息
for (EMMessage list : messages) {
// ToastUtils.showShortToast("收到CMD消息");
//异步请求刷新待接单列表数据显示待接单小红点
// EventBus.getDefault().post(new RefreReceiveData(0));
RxBus.getDefault().post(new RefreReceiveData(0));
LogUtils.d("收到CMD消息", list.getBody().toString());
}
}
@Override
public void onMessageRead(List<EMMessage> messages) {
//收到已读回执
}
@Override
public void onMessageDelivered(List<EMMessage> message) {
//收到已送达回执
}
@Override
public void onMessageRecalled(List<EMMessage> messages) {
//消息被撤回
}
@Override
public void onMessageChanged(EMMessage message, Object change) {
//消息状态变动
}
};
//实现ConnectionListener接口 监听环信连接状态
private class MyConnectionListener implements EMConnectionListener {
@Override
public void onConnected() {
}
@Override
public void onDisconnected(final int error) {
runOnUiThread(new Runnable() {
@Override
public void run() {
if (error == EMError.USER_REMOVED) {
// 显示帐号已经被移除
} else if (error == EMError.USER_LOGIN_ANOTHER_DEVICE) {
// 显示帐号在其他设备登录
} else {
if (NetUtils.hasNetwork(SplashActivity.this)) {
//连接不到聊天服务器
} else {
//当前网络不可用,请检查网络设置
}
}
}
});
}
}
/*权限回调*/
@TargetApi(23)
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
boolean flag = true;
if (requestCode == SDK_PERMISSION_REQUEST) {
for (int grant : grantResults) {
if (grant != PackageManager.PERMISSION_GRANTED) {
flag = false;
}
}
if (!flag) {
CustomDialog dialog = new CustomDialog(mActivity, R.style.custom_dialog2, getString(R.string.please_open__permission)
, new CustomDialog.OnCloseListener() {
@Override
public void onClick(Dialog dialog, boolean confirm) {
if (confirm) {
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.setData(Uri.parse("package:" + getPackageName())); // 根据包名打开对应的设置界面
startActivity(intent);
dialog.dismiss();
} else {
Toast.makeText(mActivity, getString(R.string.no_permission), Toast.LENGTH_SHORT).show();
finish();
dialog.dismiss();
}
}
});
dialog.setTitle(getString(R.string.notice))
.setNegativeButton(getString(R.string.cancle))
.setPositiveButton(getString(R.string.go_setting));
dialog.show();
return;
}
}
}
private void doJump() {
Intent intent;
if (UserManager.getInstance().hasUserInfo(this)) {
intent = new Intent(SplashActivity.this, MainActivity.class);
} else {
intent = new Intent(SplashActivity.this, LoginActivity.class);
}
Observable.timer(2000, TimeUnit.MICROSECONDS).subscribe(
aLong -> {
startActivity(intent);
finish();
}
);
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mDisapode != null) {
mDisapode.dispose();
}
}
}
package com.dayu.bigfish.presenter.homefirsttab;
import com.dayu.bigfish.base.BaseModel;
import com.dayu.bigfish.base.BasePresenter;
import com.dayu.bigfish.base.BaseView;
/**
* Created by luo on 2016/8/4.
*/
public interface HomeFirstContract {
interface Model extends BaseModel {
}
interface View extends BaseView {
}
abstract class Presenter extends BasePresenter<Model, View> {
}
}
package com.dayu.bigfish.presenter.homefirsttab;
/**
* Created by luofan on 2017/11/8.
*/
public class HomeFirstModel implements HomeFirstContract.Model {
}
package com.dayu.bigfish.presenter.homefirsttab;
/**
* Created by luofan on 2017/11/8.
*/
public class HomeFirstPresenter extends HomeFirstContract.Presenter {
@Override
public void onStart() {
}
}
package com.dayu.bigfish.presenter.homefourtab;
import com.dayu.bigfish.base.BaseModel;
import com.dayu.bigfish.base.BasePresenter;
import com.dayu.bigfish.base.BaseView;
import com.dayu.bigfish.bean.AlipayInfo;
import com.dayu.bigfish.bean.EngineerInfo;
import com.dayu.bigfish.bean.OrderRecord;
import com.dayu.bigfish.bean.TodayAchievement;
import com.dayu.bigfish.bean.TodayBalance;
import io.reactivex.Observable;
/**
* Created by luo on 2016/8/4.
*/
public interface HomeFourContract {
interface Model extends BaseModel {
// Observable<EngineerInfo> getPersonalInfo(int userId);
//
// Observable<TodayAchievement> getAchievement(int siteId, int userId);
//
// Observable<OrderRecord> getOrderRecord(int siteId, int userId);
//
// Observable<TodayBalance> getAcountBalance(int accountId);
//
Observable<AlipayInfo> getAlipayAccount(int accountId);
Observable<Object> getAllData(int accountId, int siteId);
}
interface View extends BaseView {
void getPersonalInfoSuccess(EngineerInfo info);
void getAchievementSuccess(TodayAchievement achievement);
void getOrderRecordSuccess(OrderRecord record);
void getAccountBalanceSuccess(TodayBalance todayBalance);
void getAlipayAccountSuccess(AlipayInfo info);
}
abstract class Presenter extends BasePresenter<HomeFourContract.Model, HomeFourContract.View> {
// //获取个人信息
// public abstract void getPersonalInfo(int userId);
//
// //获取工程师今日业绩
// public abstract void getAchievement(int siteId, int userId);
//
// //获取累计业绩,工单记录
// public abstract void getOrderRecord(int siteId, int userId);
//
// //账户余额
// public abstract void getAcountBalance(int accountId);
//
//获取工程师的alipayAcccount
public abstract void getAlipayAccount(int accountId);
public abstract void getAllData(int userId, int siteId);
}
}
package com.dayu.bigfish.presenter.homefourtab;
import com.dayu.bigfish.api.ApiWrapper;
import com.dayu.bigfish.bean.AlipayInfo;
import io.reactivex.Observable;
/**
* Created by luofan on 2017/11/8.
*/
public class HomeFourModel implements HomeFourContract.Model {
ApiWrapper mWrapper = new ApiWrapper();
// @Override
// public Observable<EngineerInfo> getPersonalInfo(int userId) {
// return mWrapper.getEngineerInfo(userId);
// }
//
// @Override
// public Observable<TodayAchievement> getAchievement(int siteId, int userId) {
// return mWrapper.getAchievement(siteId, userId);
// }
//
// @Override
// public Observable<OrderRecord> getOrderRecord(int siteId, int userId) {
// return mWrapper.getOrderRecord(siteId, userId);
// }
//
// @Override
// public Observable<TodayBalance> getAcountBalance(int accountId) {
// return mWrapper.getTodayBalance(accountId);
// }
//
@Override
public Observable<AlipayInfo> getAlipayAccount(int accountId) {
return mWrapper.queryAlipay(accountId);
}
@Override
public Observable<Object> getAllData(int accountId, int siteId) {
// Observable[] observableArray = new Observable[]{mWrapper.getEngineerInfo(accountId), mWrapper.getAchievement(siteId, accountId),
// mWrapper.getOrderRecord(siteId, accountId), mWrapper.getTodayBalance(accountId)
// , mWrapper.getTodayBalance(accountId)};
return Observable.mergeDelayError(mWrapper.getEngineerInfo(accountId), mWrapper.getAchievement(siteId, accountId),
mWrapper.getOrderRecord(siteId, accountId), mWrapper.getTodayBalance(accountId));
}
}
package com.dayu.bigfish.presenter.homefourtab;
import com.dayu.bigfish.bean.AlipayInfo;
import com.dayu.bigfish.bean.EngineerInfo;
import com.dayu.bigfish.bean.OrderRecord;
import com.dayu.bigfish.bean.TodayAchievement;
import com.dayu.bigfish.bean.TodayBalance;
import io.reactivex.functions.Consumer;
/**
* Created by luofan on 2017/11/8.
*/
public class HomeFourPresenter extends HomeFourContract.Presenter {
@Override
public void onStart() {
}
@Override
public void getAlipayAccount(int accountId) {
mModel.getAlipayAccount(accountId).subscribe(baseObserver(new Consumer<AlipayInfo>() {
@Override
public void accept(AlipayInfo info) throws Exception {
mView.getAlipayAccountSuccess(info);
}
}));
}
@Override
public void getAllData(int userId, int siteId) {
mModel.getAllData(userId, siteId).subscribe(baseObserver(new Consumer<Object>() {
@Override
public void accept(Object o) throws Exception {
if (o instanceof EngineerInfo) {
mView.getPersonalInfoSuccess((EngineerInfo) o);
} else if (o instanceof TodayAchievement) {
mView.getAchievementSuccess((TodayAchievement) o);
} else if (o instanceof OrderRecord) {
mView.getOrderRecordSuccess((OrderRecord) o);
} else if (o instanceof TodayBalance) {
mView.getAccountBalanceSuccess((TodayBalance) o);
}
}
}));
}
}
package com.dayu.bigfish.presenter.homesecondtab;
import com.dayu.bigfish.base.BaseModel;
import com.dayu.bigfish.base.BasePresenter;
import com.dayu.bigfish.base.BaseView;
import com.dayu.bigfish.bean.Tab;
import io.reactivex.Observable;
/**
* Created by luo on 2016/8/4.
*/
public interface HomeSecondContract {
interface Model extends BaseModel {
Observable<Tab> getTabNum(int userId);
}
interface View extends BaseView {
void getTabNumSuccess(Tab tab);
}
abstract class Presenter extends BasePresenter<Model, View> {
public abstract void getTabNum(int userId);
}
}
package com.dayu.bigfish.presenter.homesecondtab;
import com.dayu.bigfish.api.ApiWrapper;
import com.dayu.bigfish.bean.Tab;
import io.reactivex.Observable;
/**
* Created by luofan on 2017/11/8.
*/
public class HomeSecondModel implements HomeSecondContract.Model {
ApiWrapper mWrapper = new ApiWrapper();
@Override
public Observable<Tab> getTabNum(int userId) {
return mWrapper.getTabNum(userId);
}
}
package com.dayu.bigfish.presenter.homesecondtab;
import com.dayu.bigfish.bean.Tab;
import io.reactivex.functions.Consumer;
/**
* Created by luofan on 2017/11/8.
*/
public class HomeSecondPresenter extends HomeSecondContract.Presenter {
@Override
public void onStart() {
}
@Override
public void getTabNum(int userId) {
mModel.getTabNum(userId).subscribe(baseObserver(new Consumer<Tab>() {
@Override
public void accept(Tab tab) throws Exception {
mView.getTabNumSuccess(tab);
}
}));
}
}
package com.dayu.bigfish.presenter.homethiirdtab;
import com.dayu.bigfish.base.BaseModel;
import com.dayu.bigfish.base.BasePresenter;
import com.dayu.bigfish.base.BaseView;
/**
* Created by luo on 2016/8/4.
*/
public interface HomeThirdContract {
interface Model extends BaseModel {
}
interface View extends BaseView {
}
abstract class Presenter extends BasePresenter<Model, View> {
}
}
package com.dayu.bigfish.presenter.homethiirdtab;
/**
* Created by luofan on 2017/11/8.
*/
public class HomeThirdModel implements HomeThirdContract.Model {
}
package com.dayu.bigfish.presenter.homethiirdtab;
/**
* Created by luofan on 2017/11/8.
*/
public class HomeThirdPresenter extends HomeThirdContract.Presenter {
@Override
public void onStart() {
}
}
package com.dayu.bigfish.presenter.main;
import com.dayu.bigfish.base.BaseModel;
import com.dayu.bigfish.base.BasePageBean;
import com.dayu.bigfish.base.BasePresenter;
import com.dayu.bigfish.base.BaseView;
import com.dayu.bigfish.bean.Order;
import com.dayu.bigfish.bean.VersionInfo;
import io.reactivex.Observable;
import okhttp3.RequestBody;
/**
* Created by luo on 2016/8/4.
*/
public interface MainContract {
interface Model extends BaseModel {
Observable<String> getNewVersion();
Observable<VersionInfo> upgradeVersion(String appId, String versionCode);
Observable<Boolean> commitVersionInfo(RequestBody body);
Observable<BasePageBean<Order>> getReceiveOrder(int state, int pagerId, int pagerSize, int siteId, int userId);
}
interface View extends BaseView {
void needUpdate(String versionCode);
void noNeedUpdate();
void getUpgradeVersionSuccess(VersionInfo info);
void commitVersionInfoSuccess();
void getReceiveOrderSuccess(BasePageBean<Order> orders);
}
abstract class Presenter extends BasePresenter<Model, View> {
public abstract void getNewVersion(String version);
public abstract void upgradeVersion(String appId, String versionCode);
public abstract void commitVersionInfo(int accoutId, String imei, String platform, String versionCode);
public abstract void getReceiveOrder(int state, int pagerId, int pagerSize, int siteId, int userId);
}
}
package com.dayu.bigfish.presenter.main;
import com.dayu.bigfish.api.ApiWrapper;
import com.dayu.bigfish.base.BasePageBean;
import com.dayu.bigfish.bean.Order;
import com.dayu.bigfish.bean.VersionInfo;
import io.reactivex.Observable;
import okhttp3.RequestBody;
/**
* Created by luofan on 2017/11/8.
*/
public class MainModel implements MainContract.Model {
ApiWrapper mApiWrapper = new ApiWrapper();
@Override
public Observable<String> getNewVersion() {
return mApiWrapper.CheckVersion();
}
@Override
public Observable<VersionInfo> upgradeVersion(String appId, String versionCode) {
return mApiWrapper.getVersionInfo(appId, versionCode);
}
@Override
public Observable<Boolean> commitVersionInfo(RequestBody body) {
return mApiWrapper.commitVersionInfo(body);
}
@Override
public Observable<BasePageBean<Order>> getReceiveOrder(int state, int pagerId, int pagerSize, int siteId, int userId) {
return mApiWrapper.getReceiveOrders(state, pagerId, pagerSize, siteId, userId);
}
}
package com.dayu.bigfish.presenter.main;
import com.dayu.bigfish.Constants;
import com.dayu.bigfish.base.BasePageBean;
import com.dayu.bigfish.bean.Order;
import com.dayu.bigfish.bean.VersionInfo;
import com.dayu.bigfish.utils.SPUtils;
import org.json.JSONException;
import org.json.JSONObject;
import io.reactivex.functions.Consumer;
import okhttp3.MediaType;
import okhttp3.RequestBody;
/**
* Created by luofan on 2017/11/8.
*/
public class MainPresenter extends MainContract.Presenter {
@Override
public void onStart() {
}
@Override
public void getNewVersion(String version) {
mModel.getNewVersion().subscribe(baseObserver(new Consumer<String>() {
@Override
public void accept(String s) throws Exception {
if (!version.equals(s)) {
mView.needUpdate(s);
} else {
mView.noNeedUpdate();
}
}
}));
}
@Override
public void upgradeVersion(String appId, String versionCode) {
mModel.upgradeVersion(appId, versionCode).safeSubscribe(baseObserver(new Consumer<VersionInfo>() {
@Override
public void accept(VersionInfo info) throws Exception {
mView.getUpgradeVersionSuccess(info);
}
}));
}
@Override
public void commitVersionInfo(int accoutId, String imei, String platform, String versionCode) {
if (SPUtils.get(mContext, Constants.OLD_PAKAGENUM, "").equals(mContext.getPackageName())) {
return;
}
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("accountId", accoutId);
jsonObject.put("imei", imei);
jsonObject.put("platform", platform);
jsonObject.put("versionCode", versionCode);
} catch (JSONException e) {
e.printStackTrace();
}
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString());
mModel.commitVersionInfo(requestBody).subscribe(baseObserver(new Consumer<Boolean>() {
@Override
public void accept(Boolean aBoolean) throws Exception {
mView.commitVersionInfoSuccess();
}
}));
}
@Override
public void getReceiveOrder(int state, int pagerId, int pagerSize, int siteId, int userId) {
mModel.getReceiveOrder(state, pagerId, pagerSize, siteId, userId).subscribe(baseObserver(new Consumer<BasePageBean<Order>>() {
@Override
public void accept(BasePageBean<Order> orders) throws Exception {
mView.getReceiveOrderSuccess(orders);
}
}));
}
}
package com.dayu.bigfish.rxbus;
/**
* 刷新待结单数量.
* on 2017/10/11.
*/
public class RefreshReceivingNum {
private int num;
public RefreshReceivingNum(int num) {
this.num = num;
}
public int getTabNum() {
return num;
}
public void setTabNum(int num) {
this.num = num;
}
}
package com.dayu.bigfish.ui;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
import android.os.SystemClock;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.content.FileProvider;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.dayu.bigfish.BuildConfig;
import com.dayu.bigfish.Constants;
import com.dayu.bigfish.R;
import com.dayu.bigfish.base.BaseActivity;
import com.dayu.bigfish.base.BasePageBean;
import com.dayu.bigfish.bean.Order;
import com.dayu.bigfish.bean.VersionInfo;
import com.dayu.bigfish.greendao.GreenDaoManager;
import com.dayu.bigfish.greendao.MessageSysDao;
import com.dayu.bigfish.presenter.main.MainContract;
import com.dayu.bigfish.presenter.main.MainModel;
import com.dayu.bigfish.presenter.main.MainPresenter;
import com.dayu.bigfish.rxbus.RefreReceiveData;
import com.dayu.bigfish.rxbus.RefreshReceivingNum;
import com.dayu.bigfish.rxbus.RxBus;
import com.dayu.bigfish.sqlbean.MessageSys;
import com.dayu.bigfish.ui.fragment.HomeFirstTabFragment;
import com.dayu.bigfish.ui.fragment.HomeFourTabFragment;
import com.dayu.bigfish.ui.fragment.HomeMessageTabFragment;
import com.dayu.bigfish.ui.fragment.HomeSecondTabFragment;
import com.dayu.bigfish.utils.AppUtils;
import com.dayu.bigfish.utils.GetUserInfo;
import com.dayu.bigfish.utils.SPUtils;
import com.dayu.bigfish.utils.ToastUtils;
import com.dayu.bigfish.views.CustomDialog;
import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import org.greenrobot.greendao.query.Query;
import java.io.File;
import java.util.List;
import butterknife.BindView;
import butterknife.OnClick;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.functions.Consumer;
/**
* Created by luofan on 2017/11/20.
*/
public class MainActivity extends BaseActivity<MainPresenter, MainModel> implements MainContract.View {
@BindView(R.id.tab_first)
TextView mTabFirst;
@BindView(R.id.tab_second)
TextView mTabSecond;
@BindView(R.id.tab_third)
TextView mTabThird;
@BindView(R.id.tab_four)
TextView mTabFour;
@BindView(R.id.tab_order_num)
TextView mGetOrderTv;
@BindView(R.id.iv_message)
ImageView mMessageRedIcon;
private int mPosition = 0;
private ProgressDialog mProgressDialog; //进度条对话框
private FragmentManager mFragmentManger;
private Fragment[] mFragments;
private int mAccountId;
private int mSiteId;
private int mReceivingNum;
@Override
public int getLayoutId() {
return R.layout.activity_main_layout;
}
@Override
public void initView() {
HomeFirstTabFragment firstFragment = HomeFirstTabFragment.newInstance();
HomeSecondTabFragment secondFragment = HomeSecondTabFragment.newInstance();
HomeMessageTabFragment thirdFragment = HomeMessageTabFragment.newInstance();
HomeFourTabFragment fourFragment = HomeFourTabFragment.newInstance();
mFragments = new Fragment[]{firstFragment, secondFragment, thirdFragment, fourFragment};
addFragment();
mAccountId = GetUserInfo.getACCOUNT_ID(mContext);
mSiteId = GetUserInfo.getSITE_ID(mContext);
String imei = AppUtils.getIMEI(mContext);
mPresenter.commitVersionInfo(mAccountId, imei, "2", getPackageNum());
mPresenter.getNewVersion(getPackageNum());
mPresenter.getReceiveOrder(Constants.WATING_ORDER, 1, 20, mSiteId, mAccountId);
//动态刷新主页接单数量-->显示
RxBus.getDefault().toObservable(RefreReceiveData.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<RefreReceiveData>() {
@Override
public void accept(RefreReceiveData refreReceiveData) throws Exception {
if (refreReceiveData.getReceive() == 0) {
mPresenter.getReceiveOrder(Constants.WATING_ORDER, 1, 20, mSiteId, mAccountId);
}
}
});
RxBus.getDefault().toObservable(RefreshReceivingNum.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<RefreshReceivingNum>() {
@Override
public void accept(RefreshReceivingNum refreshReceivingNum) throws Exception {
mReceivingNum -= 1;
mGetOrderTv.setText(mReceivingNum + "");
}
});
int index = getIntent().getIntExtra(Constants.DUMP_INDEX, 1);
showHideFragment(mFragments[index], mFragments[mPosition]);
mPosition = 1;
mTabSecond.setSelected(true);
isShowRedIcon();
}
private void isShowRedIcon() {
MessageSysDao dao = GreenDaoManager.getInstance().getmDaoSession().getMessageSysDao();
//消息列表数据库的一些判断,判断有无未读数据,判断是否显示小红点
Query query1 = dao.queryBuilder()
.where(MessageSysDao.Properties.Flag.eq("0"))
.build();
List<MessageSys> list1 = query1.list();
if (list1.size() == 0) {
mMessageRedIcon.setVisibility(View.GONE);
} else {
mMessageRedIcon.setVisibility(View.VISIBLE);
}
}
@Override
protected void onResume() {
super.onResume();
}
@OnClick({R.id.tab_first, R.id.tab_second, R.id.tab_third, R.id.tab_four, R.id.tab_get_order})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.tab_first:
showHideFragment(mFragments[0], mFragments[mPosition]);
resetSelected();
mTabFirst.setSelected(true);
mPosition = 0;
break;
case R.id.tab_second:
showHideFragment(mFragments[1], mFragments[mPosition]);
resetSelected();
mTabSecond.setSelected(true);
mPosition = 1;
break;
case R.id.tab_third:
showHideFragment(mFragments[2], mFragments[mPosition]);
resetSelected();
mTabThird.setSelected(true);
mMessageRedIcon.setVisibility(View.GONE);
mPosition = 2;
break;
case R.id.tab_four:
showHideFragment(mFragments[3], mFragments[mPosition]);
resetSelected();
mTabFour.setSelected(true);
mPosition = 3;
break;
case R.id.tab_get_order:
Intent intent = new Intent(mContext, ReceivingActivity.class);
startActivity(intent);
break;
default:
break;
}
}
public void resetSelected() {
mTabFirst.setSelected(false);
mTabSecond.setSelected(false);
mTabThird.setSelected(false);
mTabFour.setSelected(false);
}
private void addFragment() {
mFragmentManger = getSupportFragmentManager();
FragmentTransaction transaction = mFragmentManger.beginTransaction()
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
for (int i = 0; i < mFragments.length; i++) {
Fragment fragment = mFragments[i];
String toName = fragment.getClass().getName();
transaction.add(R.id.fl_container, fragment, toName);
if (i != 0) {
transaction.hide(fragment);
}
}
transaction.commit();
}
private void showHideFragment(Fragment mShow, Fragment mHide) {
if (mShow == mHide) return;
mFragmentManger.beginTransaction()
.show(mShow)
.hide(mHide)
.commit();
}
@Override
public void needUpdate(String versionCode) {
mPresenter.upgradeVersion("dayushifua_dayu", versionCode);
}
@Override
public void noNeedUpdate() {
ToastUtils.showShortToast("当前是最新版本,无需更新");
}
@Override
public void getUpgradeVersionSuccess(VersionInfo info) {
showUpdateDialog(info.getUpgradePrompt(), info.getDownloadUrl());
}
@Override
public void commitVersionInfoSuccess() {
SPUtils.put(mContext, Constants.OLD_PAKAGENUM, mContext.getPackageName());
}
@Override
public void getReceiveOrderSuccess(BasePageBean<Order> orders) {
mReceivingNum = orders.getTotalRows();
mGetOrderTv.setText(orders.getTotalRows() + "");
}
/**
* 弹窗选择是否更新(软更新)
*
* @param upgradePrompt 提示语
* @param downloadPath 下载的路径
*/
private void showUpdateDialog(String upgradePrompt, String downloadPath) {
CustomDialog dialog = new CustomDialog(mContext, R.style.custom_dialog2, upgradePrompt
, new CustomDialog.OnCloseListener() {
@Override
public void onClick(Dialog dialog, boolean confirm) {
if (confirm) {
mProgressDialog = new ProgressDialog(mContext);//创建进度条对话
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置进度条样式为水平方向
mProgressDialog.show();//显示进度条对话框
File sdDir = Environment.getExternalStorageDirectory();
File file = new File(sdDir, SystemClock.uptimeMillis() + ".apk");
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
HttpUtils httpUtils = new HttpUtils();
httpUtils.download(downloadPath, file.getAbsolutePath(), new RequestCallBack<File>() {
@Override
public void onSuccess(ResponseInfo<File> responseInfo) {
mProgressDialog.dismiss(); //关闭进度条对话框
Toast.makeText(mContext, "下载成功", Toast.LENGTH_SHORT).show();
/*覆盖安装APK*/
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addCategory("android.intent.category.DEFAULT");
// 判断是否是AndroidN以及更高的版本
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
Uri contentUri = FileProvider.getUriForFile(mContext, BuildConfig.APPLICATION_ID + ".fileProvider", responseInfo.result);
intent.setDataAndType(contentUri, "application/vnd.android.package-archive");
} else {
intent.setDataAndType(Uri.fromFile(responseInfo.result), "application/vnd.android.package-archive");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}
startActivity(intent);
}
@Override
public void onFailure(HttpException e, String s) {
mProgressDialog.dismiss();
Toast.makeText(mContext, "下载失败", Toast.LENGTH_SHORT).show();
}
@Override
public void onLoading(long total, long current, boolean isUploading) {
super.onLoading(total, current, isUploading);
mProgressDialog.setMax((int) total); //设置进度条最大值
mProgressDialog.setProgress((int) current); //设置进度条最小值
}
});
}
} else {
}
dialog.dismiss();
}
});
dialog.setTitle("有新版本")
.setNegativeButton("下次再说")
.setPositiveButton("立刻升级");
dialog.show();
}
/**
* 获取当前应用的版本号
*/
public String getPackageNum() {
try {
PackageInfo packageInfo = this.getPackageManager().getPackageInfo(this.getPackageName(), 0);
String packageName = packageInfo.versionName;
return packageName;
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
return "解析版本号失败";
}
}
}
package com.dayu.bigfish.ui.fragment;
import android.os.Bundle;
import android.view.View;
import com.dayu.bigfish.R;
import com.dayu.bigfish.base.BaseFragment;
import com.dayu.bigfish.presenter.homefirsttab.HomeFirstContract;
import com.dayu.bigfish.presenter.homefirsttab.HomeFirstModel;
import com.dayu.bigfish.presenter.homefirsttab.HomeFirstPresenter;
/**
* Created by luofan on 2017/11/20.
*/
public class HomeFirstTabFragment extends BaseFragment<HomeFirstPresenter, HomeFirstModel> implements HomeFirstContract.View {
public static HomeFirstTabFragment newInstance() {
Bundle args = new Bundle();
HomeFirstTabFragment fragment = new HomeFirstTabFragment();
fragment.setArguments(args);
return fragment;
}
@Override
public View initView(View view) {
return view;
}
@Override
public int getLayoutId() {
return R.layout.fragment_first;
}
@Override
protected void lazyLoad() {
}
}
package com.dayu.bigfish.ui.fragment;
import android.content.Intent;
import android.content.res.AssetManager;
import android.graphics.Typeface;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.RequestOptions;
import com.dayu.bigfish.Constants;
import com.dayu.bigfish.MyApplication;
import com.dayu.bigfish.R;
import com.dayu.bigfish.base.BaseFragment;
import com.dayu.bigfish.bean.AlipayInfo;
import com.dayu.bigfish.bean.EngineerInfo;
import com.dayu.bigfish.bean.OrderRecord;
import com.dayu.bigfish.bean.TodayAchievement;
import com.dayu.bigfish.bean.TodayBalance;
import com.dayu.bigfish.presenter.homefourtab.HomeFourContract;
import com.dayu.bigfish.presenter.homefourtab.HomeFourModel;
import com.dayu.bigfish.presenter.homefourtab.HomeFourPresenter;
import com.dayu.bigfish.ui.AccountBalanceActivity;
import com.dayu.bigfish.ui.SettingActivity;
import com.dayu.bigfish.ui.WithdrawalsActivity;
import com.dayu.bigfish.ui.WorksRecordActivity;
import com.dayu.bigfish.utils.GetUserInfo;
import com.dayu.bigfish.utils.ProgressUtil;
import com.dayu.bigfish.utils.SPUtils;
import com.dayu.bigfish.views.CircleImageView;
import com.dayu.bigfish.views.CommomDialog;
import butterknife.BindView;
import butterknife.OnClick;
/**
* Created by luofan on 2017/11/20.
*/
public class HomeFourTabFragment extends BaseFragment<HomeFourPresenter, HomeFourModel> implements HomeFourContract.View {
@BindView(R.id.person_circle)
CircleImageView personCircle;
@BindView(R.id.person_name)
TextView personName;
@BindView(R.id.person_sex)
TextView personSex;
@BindView(R.id.person_age)
TextView personAge;
@BindView(R.id.person_phone)
TextView personPhone;
@BindView(R.id.person_evaluate)
TextView personEvaluate;
@BindView(R.id.persone_xingxing)
ImageView personeXingxing;
@BindView(R.id.persone_xingxing2)
ImageView personeXingxing2;
@BindView(R.id.persone_xingxing3)
ImageView personeXingxing3;
@BindView(R.id.persone_xingxing4)
ImageView personeXingxing4;
@BindView(R.id.persone_xingxing5)
ImageView personeXingxing5;
@BindView(R.id.persone_xingxing_ban)
ImageView personeXingxingBan;
@BindView(R.id.person_evaluate_xing)
LinearLayout personEvaluateXing;
@BindView(R.id.text_yeji_num)
TextView textYejiNum;
@BindView(R.id.text_jiedan_num)
TextView textJiedanNum;
@BindView(R.id.text_leiji_num)
TextView textLeijiNum;
@BindView(R.id.text_gongdan_num)
TextView textGongdanNum;
@BindView(R.id.tv_todaybalance)
TextView mtodayBalanceTv;
@BindView(R.id.ll_todaybalance)
LinearLayout mLTodayBalance;
private int userId;
private int siteId;
private String imageUrl;//头像信息
private String userName;
private String userPhone;
private String evaluate;
private int mAccountBalance;
public static HomeFourTabFragment newInstance() {
Bundle args = new Bundle();
HomeFourTabFragment fragment = new HomeFourTabFragment();
fragment.setArguments(args);
return fragment;
}
@Override
public View initView(View view) {
userId = GetUserInfo.getACCOUNT_ID(MyApplication.getContext());
siteId = GetUserInfo.getSITE_ID(MyApplication.getContext());
AssetManager mgr = mContext.getAssets();
Typeface tf = Typeface.createFromAsset(mgr, "fonts/DIN Alternate Bold.ttf");
textYejiNum.setTypeface(tf);
textJiedanNum.setTypeface(tf);
textLeijiNum.setTypeface(tf);
textGongdanNum.setTypeface(tf);
imageUrl = GetUserInfo.getUserHead(mContext);
if (TextUtils.isEmpty(imageUrl)) {
personCircle.setImageResource(R.mipmap.user_head);
} else {
RequestOptions options = new RequestOptions()
.diskCacheStrategy(DiskCacheStrategy.ALL);
Glide.with(this)
.load(imageUrl)
.apply(options)
.into(personCircle);
}
return view;
}
@Override
public int getLayoutId() {
return R.layout.activity_personal_center;
}
@Override
protected void lazyLoad() {
ProgressUtil.startLoad(mContext);
mPresenter.getAllData(userId, siteId);
}
@OnClick({R.id.person_setting, R.id.rl_gd, R.id.rl_yue})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.person_setting:
Intent intentSetting = new Intent(mContext, SettingActivity.class);
startActivity(intentSetting);
break;
case R.id.rl_gd:
Intent intent = new Intent(mContext, WorksRecordActivity.class);
startActivity(intent);
break;
case R.id.rl_yue:
Intent intent1 = new Intent(mContext, AccountBalanceActivity.class);
intent1.putExtra(Constants.ACCOUNT_BALANCE, mAccountBalance);
startActivity(intent1);
default:
break;
}
}
public void fillData(EngineerInfo info) {
userName = info.getRealName();
personName.setText(userName);
SPUtils.put(mContext, "USER_NAME", userName);
if (info.getGender() == 1) {
personSex.setText("男");
} else if (info.getGender() == 0) {
personSex.setText("女");
} else {
personSex.setText("未知");
}
personAge.setText(info.getAge() + "岁");
userPhone = info.getMobile();
personPhone.setText(userPhone);
SPUtils.put(mContext, "USER_PHONE", userPhone);
}
private void showAlertDialog() {
CommomDialog dialog = new CommomDialog(mContext, R.style.custom_dialog2);
dialog.setOnDialogClickListener(new CommomDialog.OnDialogClickListener() {
@Override
public void onRightClickListener() {
Intent intent = new Intent(mContext, WithdrawalsActivity.class);
startActivity(intent);
dialog.dismiss();
}
@Override
public void onLeftClickListener() {
}
});
dialog.show();
}
@Override
public void getPersonalInfoSuccess(EngineerInfo info) {
fillData(info);
}
@Override
public void getAchievementSuccess(TodayAchievement achievement) {
textYejiNum.setText(achievement.getAchievenment() + "");
}
@Override
public void getOrderRecordSuccess(OrderRecord record) {
//累计业绩
textLeijiNum.setText(record.get累计收益() + "");
//工单记录
textGongdanNum.setText(record.get工单记录() + "");
//个人评分
personEvaluate.setText(record.get评分() + "分");
evaluate = record.get评分() + "";
switch (evaluate) {
case "0":
personEvaluateXing.setVisibility(View.GONE);
break;
case "1":
personEvaluateXing.setVisibility(View.VISIBLE);
personeXingxing.setVisibility(View.VISIBLE);
personeXingxingBan.setVisibility(View.GONE);
personeXingxing2.setVisibility(View.GONE);
personeXingxing3.setVisibility(View.GONE);
personeXingxing4.setVisibility(View.GONE);
personeXingxing5.setVisibility(View.GONE);
break;
case "1.5":
personEvaluateXing.setVisibility(View.VISIBLE);
personeXingxing.setVisibility(View.VISIBLE);
personeXingxingBan.setVisibility(View.VISIBLE);
personeXingxing2.setVisibility(View.GONE);
personeXingxing3.setVisibility(View.GONE);
personeXingxing4.setVisibility(View.GONE);
personeXingxing5.setVisibility(View.GONE);
break;
case "2":
personEvaluateXing.setVisibility(View.VISIBLE);
personeXingxing.setVisibility(View.VISIBLE);
personeXingxing2.setVisibility(View.VISIBLE);
personeXingxingBan.setVisibility(View.GONE);
personeXingxing3.setVisibility(View.GONE);
personeXingxing4.setVisibility(View.GONE);
personeXingxing5.setVisibility(View.GONE);
break;
case "2.5":
personEvaluateXing.setVisibility(View.VISIBLE);
personeXingxing.setVisibility(View.VISIBLE);
personeXingxing2.setVisibility(View.VISIBLE);
personeXingxingBan.setVisibility(View.VISIBLE);
personeXingxing3.setVisibility(View.GONE);
personeXingxing4.setVisibility(View.GONE);
personeXingxing5.setVisibility(View.GONE);
break;
case "3":
personEvaluateXing.setVisibility(View.VISIBLE);
personeXingxing.setVisibility(View.VISIBLE);
personeXingxing2.setVisibility(View.VISIBLE);
personeXingxing3.setVisibility(View.VISIBLE);
personeXingxingBan.setVisibility(View.GONE);
personeXingxing4.setVisibility(View.GONE);
personeXingxing5.setVisibility(View.GONE);
break;
case "3.5":
personEvaluateXing.setVisibility(View.VISIBLE);
personeXingxing.setVisibility(View.VISIBLE);
personeXingxing2.setVisibility(View.VISIBLE);
personeXingxing3.setVisibility(View.VISIBLE);
personeXingxingBan.setVisibility(View.VISIBLE);
personeXingxing4.setVisibility(View.GONE);
personeXingxing5.setVisibility(View.GONE);
break;
case "4":
personEvaluateXing.setVisibility(View.VISIBLE);
personeXingxing.setVisibility(View.VISIBLE);
personeXingxing2.setVisibility(View.VISIBLE);
personeXingxing3.setVisibility(View.VISIBLE);
personeXingxing4.setVisibility(View.VISIBLE);
personeXingxingBan.setVisibility(View.GONE);
personeXingxing5.setVisibility(View.GONE);
break;
case "4.5":
personEvaluateXing.setVisibility(View.VISIBLE);
personeXingxing.setVisibility(View.VISIBLE);
personeXingxing2.setVisibility(View.VISIBLE);
personeXingxing3.setVisibility(View.VISIBLE);
personeXingxing4.setVisibility(View.VISIBLE);
personeXingxingBan.setVisibility(View.VISIBLE);
personeXingxing5.setVisibility(View.GONE);
break;
case "5":
personEvaluateXing.setVisibility(View.VISIBLE);
personeXingxing.setVisibility(View.VISIBLE);
personeXingxing2.setVisibility(View.VISIBLE);
personeXingxing3.setVisibility(View.VISIBLE);
personeXingxingBan.setVisibility(View.GONE);
personeXingxing4.setVisibility(View.VISIBLE);
personeXingxing5.setVisibility(View.VISIBLE);
break;
}
}
@Override
public void getAccountBalanceSuccess(TodayBalance todayBalance) {
if (todayBalance != null) {
mAccountBalance = todayBalance.getAccountBalance();
textJiedanNum.setText(mAccountBalance + "");
mtodayBalanceTv.setText(todayBalance.getTodaySubSidymoney() + "");
if (todayBalance.getTodaySubSidymoney() == 0) {
mLTodayBalance.setVisibility(View.GONE);
} else {
mLTodayBalance.setVisibility(View.VISIBLE);
}
}
}
@Override
public void getAlipayAccountSuccess(AlipayInfo info) {
boolean isShow = (boolean) SPUtils.get(mContext, Constants.IS_SHOW_ALIPAY_DILAOG, true);
if (isShow) {
showAlertDialog();
SPUtils.put(mContext, Constants.IS_SHOW_ALIPAY_DILAOG, false);
}
}
}
package com.dayu.bigfish.ui.fragment;
import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.View;
import com.dayu.bigfish.R;
import com.dayu.bigfish.adapter.FragmentOrderAdapter;
import com.dayu.bigfish.base.BaseFragment;
import com.dayu.bigfish.presenter.homethiirdtab.HomeThirdContract;
import com.dayu.bigfish.presenter.homethiirdtab.HomeThirdModel;
import com.dayu.bigfish.presenter.homethiirdtab.HomeThirdPresenter;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
/**
* Created by luofan on 2017/11/20.
*/
public class HomeMessageTabFragment extends BaseFragment<HomeThirdPresenter, HomeThirdModel> implements HomeThirdContract.View {
@BindView(R.id.message_tablayout)
TabLayout messageTablayout;
@BindView(R.id.message_view_pager)
ViewPager messageViewPager;
private List<Fragment> list;
private FragmentOrderAdapter fragmentAdapter;
public static HomeMessageTabFragment newInstance() {
Bundle args = new Bundle();
HomeMessageTabFragment fragment = new HomeMessageTabFragment();
fragment.setArguments(args);
return fragment;
}
@Override
public View initView(View view) {
initData();
return view;
}
@Override
public int getLayoutId() {
return R.layout.activity_message;
}
@Override
protected void lazyLoad() {
}
public void initData() {
list = new ArrayList<>();
list.add(new SystemMessageFragment());
list.add(new BigFishMessageFragment());
fragmentAdapter = new FragmentOrderAdapter(getActivity().getSupportFragmentManager(), list);
messageViewPager.setAdapter(fragmentAdapter);
messageTablayout.setupWithViewPager(messageViewPager);
messageTablayout.removeAllTabs();
messageTablayout.addTab(messageTablayout.newTab().setText("系统通知"));
messageTablayout.addTab(messageTablayout.newTab().setText("大鱼通知"));
messageTablayout.setTabMode(TabLayout.MODE_FIXED);
}
}
package com.dayu.bigfish.ui.fragment;
import android.app.Activity;
import android.content.Intent;
import android.content.res.AssetManager;
import android.graphics.Typeface;
import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.dayu.bigfish.R;
import com.dayu.bigfish.adapter.FragmentHomeAdapter;
import com.dayu.bigfish.base.BaseFragment;
import com.dayu.bigfish.bean.Tab;
import com.dayu.bigfish.presenter.homesecondtab.HomeSecondContract;
import com.dayu.bigfish.presenter.homesecondtab.HomeSecondModel;
import com.dayu.bigfish.presenter.homesecondtab.HomeSecondPresenter;
import com.dayu.bigfish.rxbus.RefreshTabNum;
import com.dayu.bigfish.rxbus.RxBus;
import com.dayu.bigfish.ui.WorksRecordActivity;
import com.dayu.bigfish.utils.GetUserInfo;
import com.dayu.bigfish.utils.ProgressUtil;
import com.dayu.bigfish.utils.UtilsScreen;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import butterknife.BindView;
import butterknife.OnClick;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.functions.Consumer;
import static com.dayu.bigfish.R.id.tabicon;
/**
* Created by luofan on 2017/11/20.
*/
public class HomeSecondTabFragment extends BaseFragment<HomeSecondPresenter, HomeSecondModel> implements HomeSecondContract.View {
@BindView(R.id.home_tabLayout)
TabLayout homeTabLayout;
@BindView(R.id.view_pager)
ViewPager mViewPager;
@BindView(R.id.title_right)
TextView mTitleRight;
public List<Fragment> list_fragments;
private FragmentHomeAdapter adapter;
private int userId;
private String imageUrl;
private int siteId;
private TextView mTabNumTv;
private TextView mTabTextTv;
private int mSelectedTab;
private boolean isFirstAddTab = true;
public final static int SUBCRIBE_TIME = 0;//预约上门时间
public final static int MODIFY_TIME = 1;//修改预约时间
public final static int UPDOOR_TIME = 2;//再次上门时间
public final static int TAB_ONE = 0;
public final static int TAB_TWO = 1;
public final static int TAB_THREE = 2;
public final static int TAB_FOUR = 3;
private int mTabIndex;
private Activity mActivity;
public static HomeSecondTabFragment newInstance() {
Bundle args = new Bundle();
HomeSecondTabFragment fragment = new HomeSecondTabFragment();
fragment.setArguments(args);
return fragment;
}
@Override
public View initView(View view) {
mActivity = getActivity();
imageUrl = GetUserInfo.getUserHead(mActivity);
init();
initData();
return view;
}
@Override
public int getLayoutId() {
return R.layout.activity_home;
}
@Override
protected void lazyLoad() {
ProgressUtil.startLoad(mActivity);
initNetWorkTabNum(userId, 0);
}
@Override
public void onResume() {
super.onResume();
}
public void init() {
userId = GetUserInfo.getACCOUNT_ID(mActivity);
siteId = GetUserInfo.getSITE_ID(mActivity);
RxBus.getDefault().toObservable(RefreshTabNum.class)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<RefreshTabNum>() {
@Override
public void accept(RefreshTabNum refreshTabNum) throws Exception {
if (refreshTabNum.getTabNum() == 0) {
//请求网络,刷新Tab
initNetWorkTabNum(userId, 0);
} else if (refreshTabNum.getTabNum() == 1) {
initNetWorkTabNum(userId, 1);
} else if (refreshTabNum.getTabNum() == -1) {
initNetWorkTabNum(userId, -1);
}
}
});
}
public void initData() {
list_fragments = new ArrayList<>();
list_fragments.add(new OrderFirstTabFragment());
list_fragments.add(new OrderSecondTabFragment());
list_fragments.add(new OrderThreeTabFragment());
list_fragments.add(new OrderFourTabFragment());
adapter = new FragmentHomeAdapter(getFragmentManager(), list_fragments);
mViewPager.setAdapter(adapter);
homeTabLayout.setupWithViewPager(mViewPager);
homeTabLayout.setTabMode(TabLayout.MODE_FIXED);
mViewPager.setCurrentItem(0);
/**
* 此处是通过反射更改TabLayout下划线的宽度
* */
homeTabLayout.post(new Runnable() {
@Override
public void run() {
try {
//拿到tabLayout的mTabStrip属性
Field mTabStripField = homeTabLayout.getClass().getDeclaredField("mTabStrip");
mTabStripField.setAccessible(true);
LinearLayout mTabStrip = (LinearLayout) mTabStripField.get(homeTabLayout);
int dp10 = UtilsScreen.dip2px(mActivity, 10);
for (int i = 0; i < mTabStrip.getChildCount(); i++) {
View tabView = mTabStrip.getChildAt(i);
//拿到tabView的mTextView属性
Field mTextViewField = tabView.getClass().getDeclaredField("mTextView");
mTextViewField.setAccessible(true);
TextView mTextView = (TextView) mTextViewField.get(tabView);
tabView.setPadding(0, 0, 0, 0);
//因为想要的效果是 字多宽线就多宽,所以测量mTextView的宽度
int width = 0;
width = mTextView.getWidth();
if (width == 0) {
mTextView.measure(0, 0);
width = mTextView.getMeasuredWidth();
}
//设置tab左右间距为10dp 注意这里不能使用Padding 因为源码中线的宽度是根据 tabView的宽度来设置的
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) tabView.getLayoutParams();
params.width = width;
params.leftMargin = dp10;
params.rightMargin = dp10;
tabView.setLayoutParams(params);
tabView.invalidate();
}
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
});
homeTabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
/**
* tab的状态监听器,此方法是当tab被选中的回调
* @param tab 当前被选中的tab
* */
@Override
public void onTabSelected(TabLayout.Tab tab) {
int temp = tab.getPosition();
mSelectedTab = temp;
if (tab.getCustomView() == null) {
return;
}
mTabNumTv = (TextView) tab.getCustomView().findViewById(R.id.tabtext);
mTabTextTv = (TextView) tab.getCustomView().findViewById(R.id.tabicon);
switch (temp) {
case 0:
mTabNumTv.setTextColor(getResources().getColor(R.color.cl_order_item_date));
mTabTextTv.setTextColor(getResources().getColor(R.color.cl_order_item_date));
mViewPager.setCurrentItem(0);
break;
case 1:
mTabNumTv.setTextColor(getResources().getColor(R.color.cl_tab_yellow));
mTabTextTv.setTextColor(getResources().getColor(R.color.cl_tab_yellow));
mViewPager.setCurrentItem(1);
break;
case 2:
mTabNumTv.setTextColor(getResources().getColor(R.color.cl_tab_read));
mTabTextTv.setTextColor(getResources().getColor(R.color.cl_tab_read));
mViewPager.setCurrentItem(2);
break;
case 3:
mViewPager.setCurrentItem(3);
break;
}
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
if (mTabNumTv == null || mTabTextTv == null) {
return;
}
switch (tab.getPosition()) {
case 0:
mTabNumTv.setTextColor(getResources().getColor(R.color.cl_tab_init));
mTabTextTv.setTextColor(getResources().getColor(R.color.cl_tab_init));
break;
case 1:
mTabNumTv.setTextColor(getResources().getColor(R.color.cl_tab_init));
mTabTextTv.setTextColor(getResources().getColor(R.color.cl_tab_init));
break;
case 2:
mTabNumTv.setTextColor(getResources().getColor(R.color.cl_tab_init));
mTabTextTv.setTextColor(getResources().getColor(R.color.cl_tab_init));
break;
case 3:
break;
}
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
/**
* 请求服务器数据获取tab各状态的数量
*/
private void initNetWorkTabNum(int userId, int tabIndex) {
ProgressUtil.startLoad(mActivity);
mTabIndex = tabIndex;
mPresenter.getTabNum(userId);
}
/**
* 将网络请求到的数据展示到tab上
*/
private void setTabNum(Tab tab, int myTabIndex) {
if (isFirstAddTab) {
homeTabLayout.removeAllTabs();
homeTabLayout.addTab(homeTabLayout.newTab().setCustomView(CreatTab(tab.getReservation() + "", "待预约")));
homeTabLayout.addTab(homeTabLayout.newTab().setCustomView(CreatTab(tab.getPendingservice() + "", "待服务")));
homeTabLayout.addTab(homeTabLayout.newTab().setCustomView(CreatTab(tab.getError() + "", "异常单")));
homeTabLayout.addTab(homeTabLayout.newTab().setCustomView(CreatTab(tab.getCanceled() + "", "已取消")));
isFirstAddTab = false;
} else {
int num = 0;
String text = null;
switch (mSelectedTab) {
case 0:
num = tab.getReservation();
text = "待预约";
break;
case 1:
num = tab.getPendingservice();
text = "待服务";
break;
case 2:
num = tab.getError();
text = "异常单";
break;
case 3:
num = tab.getCanceled();
text = "已取消";
break;
default:
break;
}
if (mTabNumTv != null && mTabTextTv != null) {
mTabNumTv.setText(num + "");
mTabTextTv.setText(text);
}
if (myTabIndex != -1) {
mViewPager.setCurrentItem(myTabIndex);
homeTabLayout.getTabAt(myTabIndex).select();
}
}
}
/**
* TabLayout tab的自定义布局
*
* @param number tab标签上的数字(更新频繁)
* @param iconID tab标签数字下的状态说明(1.0版本默认4种状态)
*/
private View CreatTab(String number, String iconID) {
View newtab = LayoutInflater.from(mActivity).inflate(R.layout.activity_home_tab, null);
TextView textView_number = (TextView) newtab.findViewById(R.id.tabtext);
AssetManager mgr = mActivity.getAssets();//得到AssetManager
//设置字体的为DIN Alternate Bol格式
Typeface tf = Typeface.createFromAsset(mgr, "fonts/DIN Alternate Bold.ttf");//根据路径得到Typeface
textView_number.setTypeface(tf);//设置字体
textView_number.setText(number);
TextView textView = (TextView) newtab.findViewById(tabicon);
textView.setText(iconID);
return newtab;
}
@OnClick(R.id.title_right)
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.title_right:
Intent intent =new Intent(mActivity, WorksRecordActivity.class);
mActivity.startActivity(intent);
break;
}
}
@Override
public void getTabNumSuccess(Tab tab) {
setTabNum(tab, mTabIndex);
}
}
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="4dp"/>
<solid android:color="@color/cl_receiving_order_item_data"/>
</shape>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@mipmap/img_tab_day_selected" android:state_selected="true"/>
<item android:drawable="@mipmap/img_tab_day"/>
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@mipmap/img_tab_person_selected" android:state_selected="true"/>
<item android:drawable="@mipmap/img_tab_person"/>
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@mipmap/img_tab_order_selected" android:state_selected="true"/>
<item android:drawable="@mipmap/img_tab_order"/>
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@mipmap/img_tab_message_selected" android:state_selected="true"/>
<item android:drawable="@mipmap/img_tab_message"/>
</selector>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:id="@+id/fl_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
<LinearLayout
android:id="@+id/ll_tab"
android:layout_width="match_parent"
android:layout_height="53.3dp"
android:layout_gravity="bottom"
android:background="@color/cl_home_listview_bg"
android:orientation="horizontal"
>
<TextView
android:id="@+id/tab_first"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_weight="1"
android:drawablePadding="2dp"
android:drawableTop="@drawable/tab_first_selector"
android:gravity="center"
android:text="日程"
android:textColor="#585858"
android:textSize="10sp"
/>
<TextView
android:id="@+id/tab_second"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_weight="1"
android:drawablePadding="2dp"
android:drawableTop="@drawable/tab_second_selector"
android:gravity="center"
android:text="工单"
android:textColor="#585858"
android:textSize="10sp"
/>
<LinearLayout
android:id="@+id/tab_get_order"
android:layout_width="0dp"
android:layout_height="42dp"
android:layout_gravity="center"
android:layout_weight="1"
android:background="@drawable/tab_blue_react"
android:gravity="center"
android:orientation="vertical"
>
<TextView
android:id="@+id/tab_order_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:textColor="@color/white"
android:textSize="16.7sp"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="接单"
android:textColor="@color/white"
android:textSize="10sp"
/>
</LinearLayout>
<RelativeLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_weight="1"
android:gravity="center"
>
<TextView
android:id="@+id/tab_third"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawablePadding="2dp"
android:drawableTop="@drawable/tab_third_selector"
android:gravity="center"
android:text="消息"
android:textColor="#585858"
android:textSize="10sp"
/>
<ImageView
android:id="@+id/iv_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignEnd="@id/tab_third"
android:layout_alignParentTop="true"
android:layout_alignRight="@id/tab_third"
android:src="@mipmap/renwu_numbg"
android:visibility="visible"/>
</RelativeLayout>
<TextView
android:id="@+id/tab_four"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_weight="1"
android:drawablePadding="2dp"
android:drawableTop="@drawable/tab_four_selector"
android:gravity="center"
android:text="我的"
android:textColor="#585858"
android:textSize="10sp"
/>
</LinearLayout>
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginBottom="53.3dp"
android:background="@drawable/actionbar_shadow_up"/>
</FrameLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
style="@style/title"
>
<TextView
style="@style/text_title"
android:text="日程"
/>
</RelativeLayout>
<ImageView
android:id="@+id/image_tip"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="150dp"
android:src="@mipmap/yu"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="@dimen/dp_13"
android:text="暂无工单"
android:textColor="@color/cl_selector_hui"
android:textSize="@dimen/sp_13.3"
/>
</LinearLayout>
\ No newline at end of file
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 sign in to comment