EditCheckManager的使用

来源:互联网 发布:java 微商城开源框架 编辑:程序博客网 时间:2024/06/08 04:26

对多个EditText的状态进行监听,特别好用

package com.juexing.tniu.utils;import android.text.TextUtils;import android.widget.Button;import android.widget.EditText;import com.juexing.tniu.utils.listener.SimpleTextWatcher;/** * author:crs * time:2017/3/1 * description:用来监听一个多个EditText是否有数据以改变指定Button状态 */public class EditCheckManager extends SimpleTextWatcher {    public interface ICheck {        boolean check();    }    private ICheck mICheck;    private EditText[] mEditTexts;    private Button mBtn;    private EditCheckManager() {    }    private EditCheckManager(Button btn, EditText... editTexts) {        mEditTexts = editTexts;        mBtn = btn;    }    private EditCheckManager(ICheck ICheck, Button btn, EditText... editTexts) {        mICheck = ICheck;        mEditTexts = editTexts;        mBtn = btn;    }    public static EditCheckManager create(Button btn, EditText... editTexts) {        return new EditCheckManager(btn, editTexts);    }    public static EditCheckManager create(Button btn, ICheck iCheck, EditText... editTexts) {        return new EditCheckManager(iCheck, btn, editTexts);    }    public void listener() {        if (mBtn == null || mEditTexts == null) {            return;        }        for (EditText editText : mEditTexts) {            editText.addTextChangedListener(this);        }        mBtn.setEnabled(checkCondition());    }    public void removeListener() {        for (EditText editText : mEditTexts) {            editText.removeTextChangedListener(this);        }    }    @Override    public void onTextChanged(CharSequence s, int start, int before, int count) {        mBtn.setEnabled(checkCondition());    }    private boolean checkCondition() {        if (mICheck == null) {            return checkAllEdit();        } else {            return mICheck.check();        }    }    private boolean checkAllEdit() {        for (EditText editText : mEditTexts) {            if (TextUtils.isEmpty(editText.getText() + "")) {                return false;            }        }        return true;    }}

屏幕适配 特别好用:com.zhy:autolayout:1.4.5


//添加日志拦截器:看看效果

HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();

interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);

okHttpClientBuilder.addInterceptor(interceptor);

 

添加依赖的方式,而非导入jar包,否则可能导致方法数超过65535,导致apk过大。

对项目依赖的管理:

compile 'com.alibaba:fastjson:1.2.37'

compile 'com.squareup.okhttp3:okhttp:3.3.1'

compile 'com.squareup.okhttp3:logging-interceptor:3.3.1'

compile 'com.squareup.okio:okio:1.13.0'

compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'

 

类头注释:

/**

 * Created on ${DATE}.

 * Author:crs

 * Description:

 */

 

项目里面已经使用了Bufferknife所以就不需要在使用

setOnClistenerListener(this)LoginAct里面有很多冗余的代码(版本维护的时候进行删除)

 

在父类里面封装了加载对话框以及隐藏对话框的操作。


使用MVP模式改造代码(特别好用)


Process finished with exit code 0

说明程序正常执行完毕,没有出错。

process finished with exit code 1

说明程序出错,也就是代码有问题。


1)把目标sdk修改成22,自己还没有测试过,是否可以安装(针对6.0及以上的权限)。

2)申请另一个百度统计账号,用于测试(防止脏数据的出现)。

3)申请另一个友盟统计账号,用于测试。

4)清除无用的依赖和图片资源,缩小apk的大小(特别有用的)

5)通过gradle的方式打渠道包,还没有配置过。

6)友盟推送功能的实现。

7)对于svn的处理。



原创粉丝点击