云计算、AI、云原生、大数据等一站式技术学习平台

网站首页 > 教程文章 正文

Android 开发,怎样快速搭建一个项目?

jxf315 2024-12-05 13:20:26 教程文章 43 ℃

近两年,Android 开发可以说是越来越容易了,在很多前辈的努力下,Android 开发生态圈里构建出了很多非常好的轮子(开发库或框架)。在开发中,有时都面对这么多轮子都有选择困难症了。面对炫彩的开发库和很流行的框架,我们该如何选择呢?

1、GitHub Star 数判断标准,GitHub Star 数越多,证明这个轮子使用的人数比较多,一般以 1 k 起为判断标准;

如图,搜索 “Android” ,选择排序为 “Most Stars”,这样搜索结果就会按照 Star 数最多的排在首页。

2、综合分析项目,整体考虑。从项目应用场景、开发人员、公司情况、项目后期维护等方面分析,选择合适项目的开发框架或开发库是最好的选择,不要认为哪个开发框架流行用哪个,项目开发中稳定是大前提;

3、仔细查看开源框架源码,多看开源框架的 Issues,从 Issues 提前预判框架在项目开发中可能会出现的问题,慎重选择每一个开源框架,是一个程序员应该必备的精神。

在 Android 开发中,一般都是从以上3个方面选择开源框架搭建Android 项目。Android 项目开发中,开源框架一般可以分为网络、组件以及其它工具类组成,下面我分别介绍几个比较优秀的开源框架。

1、网络框架

常用的 Android 开发网络请求库有

Retrofit https://github.com/square/retrofit

OkHttp https://github.com/square/okhttp

Volley https://github.com/google/volley

目前用的最多的也就 Retrofit 和 OkHttp ,Volley 基本上是很少有人用吧,前两个都是 Square 公司开源的,很厉害吧!Volley 是Google 早年开源的,目前基本被淘汰。

这里简单介绍下 Retrofit

Retrofit 是一个RESTful 的 HTTP 网络请求框架的封装,网络请求的工作本质上是 OkHttp 完成,而Retrofit 仅负责网络请求接口的封装。

示例如下:

(1)、创建一个接口

public interface GitHubService {
  @GET("users/{user}/repos")
  Call<List<Repo>> listRepos(@Path("user") String user);
}

(2)、实现接口

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("https://api.github.com/")
    .build();

GitHubService service = retrofit.create(GitHubService.class);


(3)、调用

Call<List<Repo>> repos = service.listRepos("octocat");

如需详细了解 Retrofit ,请访问 https://square.github.io/retrofit/,这里有非常详细的开发文档。

2、组件库

Android 开发的组件库有很多,如 BasePopup、RxUI、SmartRefreshLayout等

BasePopup:https://github.com/razerdp/BasePopup,是一款针对系统PopupWindow优化的Popup库,功能强大,支持背景模糊,常用在应用中弹框场景。

RxUI:RxUI 是 RxTool 下的一个分支, RxTool 是 Android 开发过程经常需要用到各式各样的工具类集合。很强,试试呗 https://github.com/Tamsiree/RxTool 。

SmartRefreshLayout:Android 开发中必备的下拉刷新、上拉加载库,很好用,目前 Github Star数已有 20k 了,赶紧上手 ,https://github.com/scwang90/SmartRefreshLayout

3、工具,提升开发效率、维护代码利器

Butter Knife ,俗称黄油刀,Android 开发必备,将 Butter Knife 引入项目,将会节省不少开发时间,避免了开发者 通过多次 findViewById(), 目前最新版本已是 10.2.1 了,这是 GitHub 链接https://github.com/JakeWharton/butterknife

示例

class ExampleActivity extends Activity {
  @BindString(R.string.title) String title;
  @BindDrawable(R.drawable.graphic) Drawable graphic;
  @BindColor(R.color.red) int red; // int or ColorStateList field
  @BindDimen(R.dimen.spacer) float spacer; // int (for pixel size) or float (for exact value) field
  // ...
}

ViewHolder 里使用

public class MyAdapter extends BaseAdapter {
  @Override public View getView(int position, View view, ViewGroup parent) {
    ViewHolder holder;
    if (view != null) {
      holder = (ViewHolder) view.getTag();
    } else {
      view = inflater.inflate(R.layout.whatever, parent, false);
      holder = new ViewHolder(view);
      view.setTag(holder);
    }

    holder.name.setText("John Doe");
    // etc...

    return view;
  }

  static class ViewHolder {
    @BindView(R.id.title) TextView name;
    @BindView(R.id.job_title) TextView jobTitle;

    public ViewHolder(View view) {
      ButterKnife.bind(this, view);
    }
  }
}
 @OnClick(R.id.test)  
public void onViewClick(View view){

}

@OnPageChange(R.id.viewPager)
public void onPageChange(int position){

}

ARouter ,ARouter 是国内阿里巴巴开源的框架,主要解决项目中耦合严重的问题,有了它,代码耦合问题再也不是难事了,项目中的业务可以根据实际需要分离成多个组件,使用 ARouter 为多个组件间的通信提供了保障。两个字描述,强大,三个字,很强大,详细了解请移步https://github.com/alibaba/ARouter

Arouter 初始化

if (isDebug()) {           // 这两行必须写在init之前,否则这些配置在init过程中将无效
    ARouter.openLog();     // 打印日志
    ARouter.openDebug();   // 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险)
}
ARouter.init(mApplication); // 尽可能早,推荐在Application中初始化

添加 Activity 注解,这里需要注意,填写的路径(path)至少需要两级 如 “/test/activity ” ,不能少一个斜杠,不然会让你很懵逼的到处找错误都找不到。

// 在支持路由的页面上添加注解(必选)
// 这里的路径需要注意的是至少需要有两级,/xx/xx
@Route(path = "/test/activity")
public class YourActivity extend Activity {
    ...
}

从开源框架或开源库选择到搭建项目这个过程,会经历痛苦的抉择,选择了 A 开源框架,又选择了 B 开源框架,两个框架从项目的不同角度在协助着项目开发,最终发现两者竟然不兼容,或者大部分功能都是相同的,这就很难选择了......

最后我推荐一个 MVP 开发模式的框架,我认为他是GitHub 上 MVP 开发模式框架中比较优秀的了,让小白也能轻松上手,快速搭建项目,不用考虑项目各类框架选择,作者已经选好了

Android 开发中常用、必用的开发框架。他就是 MVPArms https://github.com/JessYanCoding/MVPArms。

作者提供了 Android Studio 开发工具插件,一键生成Activity和对应的 MVP 相关接口和实现类,避免了手动创建多个类的繁琐事项,开发文档写的非常精细。

开始学习吧!



封面图: Pixabay License

Tags:

最近发表
标签列表