# android-view-inject **Repository Path**: ppnt/android-view-inject ## Basic Information - **Project Name**: android-view-inject - **Description**: 自开发Android View注入工程 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-12-14 - **Last Updated**: 2022-06-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # android-view-inject ## 简介 适用与嵌入式设备的控件注入框架 ## 概述 传统的项目中,为了从XML文件找到各个控件,需要使用方法findViewById,太多的findViewId,使我们的代码变得繁琐, 获取,强转,千篇一律的重复着某种机制,其实内心也是蛮崩溃的。 当然了,为了解决不必要的findViewById,有很多出色的第三方,如ButterKnife,AndroidAnotations,还有XUtils,等等,这些第三方不可否认, 是特别的优秀,功能也是非常的强大,使用起来也是非常的简单,但是,也有一定的负面影响, 显而可见,这些第三方,不仅仅有注解功能,还有联网,请求数据库等等其它很多功能, 而我们只需要一个注解功能,这不等于,我需要一个苹果,你一下给了我一车水果,无形中增加了内存的容量 其实说的通俗点就是,第三方很多冗余的代码,会占去我们的内存,基于这样的一个原因,不就是一个注解功能吗,我们何不自己实现呢? ## 主要功能 ### 参考工程 AndroidViewInjectTest ### 安装工程到本地 这是一个maven工程,使用maven将工程安装到本地 ### 添加依赖 在build.gradle中添加mavenLocal() ``` buildscript { repositories { mavenLocal() google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.1.3' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { mavenLocal() google() jcenter() } } task clean(type: Delete) { delete rootProject.buildDir } ``` 添加构件 ``` implementation 'com.litongjava:android-view-inject:1.0.1' ``` ### 整合Activity * @FindViewByIdLayout 查找布局文件并注入到当前Activity,用于替换setContentView * @FindViewById 查看控件id,注入到成员变量 * @OnClick 添加单击事件 测试代码 ``` package com.litongjava.android_view_inject_test; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.TextView; import android.widget.Toast; import com.litongjava.android.view.inject.annotation.FindViewById; import com.litongjava.android.view.inject.annotation.FindViewByIdLayout; import com.litongjava.android.view.inject.annotation.OnClick; import com.litongjava.android.view.inject.utils.ViewInjectUtils; @FindViewByIdLayout(R.layout.activity_main) public class MainActivity extends AppCompatActivity { @FindViewById(R.id.tv) private TextView mText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); ViewInjectUtils.injectActivity(this, this); mText.setText("Annotation"); } @OnClick(R.id.tv) public void onClick(View view) { Toast.makeText(this, "on click", Toast.LENGTH_LONG).show(); } } ``` ### Fragment 布局文件 fragment_async.xml ```