Favor库简述
2015-11-08 20:53
337 查看
Favor是一个第三方库, 可以简化SharedPreferences, 使用依赖注入的方式声明. 我们根据常见的输入框, 把账户信息存在Favor的类中, 来看看这个库怎么用.
布局, 输入账户和密码, 下面两行小字显示保存在SharedPreferences中的数据.
使用TextInputLayout来绘制输入框.
页面逻辑, 验证邮箱和密码, 当输入正确时, 保存在SharedPreference里面, 并显示, 使用Favor库进行保存.
Account类, 必须要设定set和get方法, 名称相同, 可以提供默认值.
设置Favor类
使用Favor类
Github下载地址
声明Favor的Interface, 就可以方便地使用SharedPreferences了.
Enjoy it!
1. 准备
配置build.gradle
compile 'com.cocosw:favor:0.2.0' compile 'com.jakewharton:butterknife:7.0.1'
布局, 输入账户和密码, 下面两行小字显示保存在SharedPreferences中的数据.
<LinearLayout ....> <android.support.design.widget.TextInputLayout android:id="@+id/user_name_wrapper" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="8dp"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Username" android:inputType="textEmailAddress"/> </android.support.design.widget.TextInputLayout> <android.support.design.widget.TextInputLayout android:id="@+id/password_wrapper" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="8dp"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Password" android:inputType="textPassword"/> </android.support.design.widget.TextInputLayout> <Button android:id="@+id/commit_button" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="8dp" android:background="@color/colorAccent" android:text="登录" android:textColor="@android:color/white"/> <TextView android:id="@+id/user_name_show" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="8dp" android:text="username"/> <TextView android:id="@+id/password_show" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="password"/> </LinearLayout>
使用TextInputLayout来绘制输入框.
页面逻辑, 验证邮箱和密码, 当输入正确时, 保存在SharedPreference里面, 并显示, 使用Favor库进行保存.
public class MainActivity extends AppCompatActivity { private static final String EMAIL_PATTERN = "^[a-zA-Z0-9#_~!$&'()*+,;=:.\"(),:;<>@\\[\\]\\\\]+@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*$"; @Bind(R.id.user_name_wrapper) TextInputLayout mUserNameWrapper; @Bind(R.id.password_wrapper) TextInputLayout mPasswordWrapper; @Bind(R.id.user_name_show) TextView mUserNameShow; @Bind(R.id.password_show) TextView mPasswordShow; private Account mAccount; // 账户类 @OnClick(R.id.commit_button) void commitAccount(View view) { hideKeyboard(); String username = mUserNameWrapper.getEditText().getText().toString(); String password = mPasswordWrapper.getEditText().getText().toString(); if (!validateEmail(username)) { mUserNameWrapper.setError("邮箱地址错误"); } else if (!validatePassword(password)) { mUserNameWrapper.setErrorEnabled(false); mPasswordWrapper.setError("密码错误"); mPasswordWrapper.getEditText().setText(""); } else { mUserNameWrapper.setErrorEnabled(false); mPasswordWrapper.setErrorEnabled(false); doLogin(username, password); mUserNameShow.setText(mAccount.getUserName()); mPasswordShow.setText(mAccount.getPassword()); } } private void doLogin(String username, String password) { mAccount.setUserName(username); mAccount.setPassword(password); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); mAccount = new FavorAdapter.Builder(this).build().create(Account.class); mUserNameShow.setText(mAccount.getUserName()); mPasswordShow.setText(mAccount.getPassword()); } // 隐藏键盘 private void hideKeyboard() { View view = getCurrentFocus(); if (view != null) { ((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE)) .hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); } } // 验证邮箱 private boolean validateEmail(String email) { Pattern pattern = Pattern.compile(EMAIL_PATTERN); Matcher matcher = pattern.matcher(email); return matcher.matches(); } // 验证密码 private boolean validatePassword(String password) { return password.length() > 7; } ... }
2. Favor
初始化Favor类, 传入Context和Favor类型的类.mAccount = new FavorAdapter.Builder(this).build().create(Account.class);
Account类, 必须要设定set和get方法, 名称相同, 可以提供默认值.
@AllFavor public interface Account { void setUserName(String userName); @Default("No Name") String getUserName(); void setPassword(String password); @Default("000000") String getPassword(); }
设置Favor类
private void doLogin(String username, String password) { mAccount.setUserName(username); mAccount.setPassword(password); }
使用Favor类
mUserNameShow.setText(mAccount.getUserName()); mPasswordShow.setText(mAccount.getPassword());
Github下载地址
声明Favor的Interface, 就可以方便地使用SharedPreferences了.
Enjoy it!
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories