常用到的技术框架: 1 数据库:GreenDao 2 事件总线:EventBus 3 链式调用:Rxjava2 4 网络封装:Retrofit2(Okhttps) 5 视图:RecyclerView 6 注解:ButterKnife 7 图片:iconfont
1 GreenDao的使用 1 配置依赖 Project 的Gradle中 buildscript{ dependencies{ classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1' } } Module 的Gradle中 apply plugin: 'org.greenrobot.greendao' android{ greendao { schemaVersion 1 } } dependencies { compile 'org.greenrobot:greendao:3.2.0' }
2 定义bean 表 @Entity( nameInDb = "book_info",//表名 generateConstructors = false ) public class Book{ @Id(autoincrement = true) private Long _id;//主键 @Property(nameInDb = "video_id") public String video_id; } ------rebuild Project 3 初始化 DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "shop.db"); //获取可写数据库 SQLiteDatabase db = helper.getWritableDatabase(); //获取数据库对象 DaoMaster daoMaster = new DaoMaster(db); //获取Dao对象管理者 daoSession = daoMaster.newSession(); 4 使用 BookDao dao = daoSession.getBookDao(); dao.insert(book); 5 建议对DaoSession 进行封装 —————————————————————— 2 EventBus 事件总线的引用 1 配置依赖 在Module中配置Gradle dependencies{ compile 'org.simple:androideventbus:1.0.5' } 2 注册与注销 在Activity /Fragment (onCreate/onDestroy)中 EventBus.getDefault().register(this); EventBus.getDefault().unregister(this); 3 发送 发送对象(Object),指定Tag(String) EventBus.getDefault().post(bundle, Event.MSG_DIALOG); 4 接收 订阅对象,最好有instanceof + 判空的逻辑 @Subscriber(tag = Event.MSG_DIALOG) private void getMessageSuccess(Bundle bundle){} —————————————————————— 3 Rxjava2 链式调用 Observable.create(new ObservableOnSubscribe() { @Override public void subscribe(ObservableEmitter emitter) throws Exception { } }).subscribe(new Observer() { @Override public void onSubscribe(Disposable d) {} @Override public void onNext(Object value) {}
@Override public void onError(Throwable e) {}
@Override public void onComplete() {} }); 订阅和回调 subscribeOn(Schedulers.io()) //之前的操作,发生在 IO线程中 .observeOn(AndroidSchedulers.mainThread()) //最终的回调判断,发送在主线中 —————————————————————— 4 Retrofit2 网络层封装 public static T tokenCreate(final Class service) { return new Retrofit.Builder() .client(OkHttpUtils.getInstance().getOkHttpClient()) .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .addConverterFactory(GsonConverterFactory.create()) .baseUrl(NetConstant.IPAFRESS).build().create(service); } 传入Service public interface CloudService { @POST("/api/services/app/Troubles/getAllKeyAreas") Observable queryAllArea(@Body AreaInput input); } Observable> ob = RetrofitHelper.tokenCreate(Service.class).query(input); 分别封装(Client IP地址,Gson解析,Bean对象,Service封装) 形成一次网络请求 —————————————————————— 5 RececlyeView 视图 1 配置依赖 模块内配置 dependencies { implementation 'com.android.support:recyclerview-v7:26.1.0' } 2 布局文件 3 参数设置 //recyclerView.setLayoutManager(new GridLayoutManager(this, 4)); //网格 recyclerView.setLayoutManager(new LinearLayoutManager(this)); //列表 //每个item大小如果是确定的,设置可以提高性能 recyclerView.setHasFixedSize(true); //每个元素固定大小 recyclerView.setAdapter(mAdapter); 4 适配器设置 继承RecyclerView.Adapter abstract class BaseRecyAdapter extends RecyclerView.Adapter { 实现方法,设置对应的显示 @Override public void myBindViewHolder(final ViewHolder holder, final int position) {} //具体变化 @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {} //布局文件 5 View布局文件的Bean对象 class ViewHolder extends RecyclerView.ViewHolder {} —————————————————————— 6 ButterKnife注解框架 1 配置依赖 dependencies { compile 'com.jakewharton:butterknife:8.1.0' annotationProcessor 'com.jakewharton:butterknife-compiler:8.1.0' } 2 Activity 只需要绑定 ButterKnife.bind(this); 3 Fragment 绑定+注销 public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { unbinder = ButterKnife.bind(this, containerView); } public void onDestroyView() { super.onDestroyView(); unbinder.unbind(); } 4 安装插件 打开File--Setting--Plugins--Android ButterKnife Zelezny 安装插件,然后重启 5 右键自动生成 —————————————————————— 7 Iconfont 的使用 1 来源 http://www.iconfont.cn/ (阿里出品) 2 下载 html eot svg ttf woff (5个必要的文件) main/assets/iconfont/ 下面 3 配置 html 中的()类型的字符,配置到string.xml中 4 使用TextView @string来引用 需要设置颜色和大小 TextColor TextSize 5 设置引用 Typeface iconfont = Typeface.createFromAsset(getAssets(), "iconfont/iconfont.ttf"); textview.setTypeface(iconfont); 最好是,重写TextView public class ImageTextView extends AppCompatTextView { public Context mContext;
public ImageTextView(Context context) { super(context); init(context); }
public ImageTextView(Context context, AttributeSet attrs) { super(context, attrs); init(context); }
private void init(Context context){ Typeface iconfont = Typeface.createFromAsset(context.getAssets(), "iconfont/iconfont.ttf"); mContext = context; setTypeface(iconfont); } }

更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  3. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  4. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  5. Retrofit +OKHttp简单封装使用
  6. android 基本知识
  7. android AIDL简单步骤
  8. Android(安卓)9.0静默安装与卸载app
  9. Android(安卓)Studio,gradle project sync failed 错误

随机推荐

  1. Android(安卓)SDK: adb shell 命令的使用
  2. Android(安卓)绑定数据到界面控件
  3. Android如何调用第三方SO库
  4. Android(安卓)官方博客 - Android应用程
  5. 修改Android系统属性SystemProperties.se
  6. Android(安卓)6.0之后的动态权限
  7. Android消息处理机制(二)
  8. android TextView多行文本(超过3行)使用e
  9. 【Android】ListView与Button的共存问题
  10. ListActivity中android:id="@+id/android