├── .gitignore ├── LICENSE ├── README-jp.md ├── README-zh.md ├── README.md ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── qdedu │ │ └── autopage │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── qdedu │ │ │ └── autopage │ │ │ ├── AllDataActivity.kt │ │ │ ├── DefaultValueActivity.kt │ │ │ ├── FragmentSimpleActivity.kt │ │ │ ├── MainActivity.kt │ │ │ ├── MainActivity2.kt │ │ │ ├── SimpleJump1Activity.kt │ │ │ ├── SimpleJumpResultActivity.kt │ │ │ ├── data │ │ │ └── MyData.kt │ │ │ └── ui │ │ │ └── main │ │ │ ├── FragmentSimpleFragment.kt │ │ │ └── SimpleViewModel.kt │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ └── ic_launcher_background.xml │ │ ├── layout │ │ ├── activity_all_data.xml │ │ ├── activity_default_value.xml │ │ ├── activity_main.xml │ │ ├── activity_main2.xml │ │ ├── activity_simple_jump1.xml │ │ ├── activity_simple_jump_result.xml │ │ ├── fragment_simple_activity.xml │ │ └── simple_fragment.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── values-night │ │ └── themes.xml │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── themes.xml │ └── test │ └── java │ └── com │ └── qdedu │ └── autopage │ └── ExampleUnitTest.kt ├── autopage-lib ├── .gitignore ├── build.gradle └── src │ └── main │ └── java │ └── com │ └── qdedu │ └── autopage │ └── AutoPage.kt ├── autopage-processor ├── .gitignore ├── build.gradle └── src │ └── main │ └── java │ └── com │ └── qdedu │ └── autopage │ └── processor │ ├── AutoPageProcess.kt │ ├── DataPojo.kt │ ├── EleParser.kt │ ├── KtActivityFactory.kt │ ├── KtFileFactory.kt │ ├── KtFragmentFactory.kt │ └── utils │ └── StringUtils.kt ├── autopage ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── qdedu │ │ └── autopage │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ └── java │ │ └── com │ │ └── qdedu │ │ └── autopage │ │ └── AutoJ.kt │ └── test │ └── java │ └── com │ └── qdedu │ └── autopage │ └── ExampleUnitTest.kt ├── build.gradle ├── config.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/caches 5 | /.idea/libraries 6 | /.idea/modules.xml 7 | /.idea/workspace.xml 8 | /.idea/navEditor.xml 9 | /.idea/assetWizardSettings.xml 10 | .DS_Store 11 | /build 12 | /captures 13 | .externalNativeBuild 14 | .cxx 15 | local.properties 16 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 zhonghua 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README-jp.md: -------------------------------------------------------------------------------- 1 | ![](https://img.shields.io/badge/JitPack-1.0.8-green) 2 | ![](https://img.shields.io/badge/JCenter-1.0.4-yellowgreen) 3 | ![](https://img.shields.io/badge/code-kotlin-red) 4 | ![](https://img.shields.io/badge/Android%20Arsenal-AutoPage-yellow) 5 | ![](https://img.shields.io/badge/author-smartbackme-blue) 6 | # AutoPage 7 | 番号 v1.0.2 8 | kotlin & java をサポートします 9 | 1. Serializable をサポートします 10 | 11 | code address: [Version number v1.0.2](https://github.com/smartbackme/AutoPage/tree/v1.0.2) 12 | 13 | 説明書: [Version number v1.0.2](https://github.com/smartbackme/AutoPage/blob/v1.0.2/README-zh.md) 14 | 15 | 16 | 番号 v1.0.8 17 | 更新内容:(特にkotlinのために) 18 | 1. kotlin の 利用 19 | 2. default value 20 | 3. Parcelable をサポートします 21 | 4. 性能を向上させる 22 | 23 | # AutoPage v1.0.8 24 | 25 | いいと思ったら starをお願いします 26 | 27 | # 比較: 28 | 1.ジャンプ方式の比較 29 | 30 | ```bash 31 | Intenti=new Intent(this,MainActivity.class); 32 | startActivity(i); 33 | ``` 34 | vs 35 | 36 | ```bash 37 | ApMainActivity.newInstance().start(this) 38 | ``` 39 | 40 | ```bash 41 | //送信 42 | Intenti=new Intent(this,MainActivity.class); 43 | Bundle bundle = new Bundle(); 44 | bundle.putInt("message", "123"); 45 | i.putExtra("Bundle", bundle); 46 | startActivity(i); 47 | //受信 48 | String s=bundle.getString("message",""); 49 | 50 | ``` 51 | vs 52 | 53 | ```bash 54 | //送信 55 | ApMainActivity.newInstance().apply { 56 | message = "123" 57 | } .start(this) 58 | //受信 59 | AutoJ.inject(this); 60 | ``` 61 | 62 | model 63 | ```bash 64 | //送信 65 | ApAllDataActivity.newInstance().apply { 66 | message = "123" 67 | myData = MyData("hfafas",true,21) 68 | } .start(this) 69 | //受信 70 | AutoJ.inject(this); 71 | ``` 72 | 73 | # AutoPage 74 | Android の簡単なツール  75 | # 注意事項:次の二つの要求が必要です 76 | 1. androidx 77 | 2. kotlin & java 78 | 79 | # タイプ 80 | 81 | 以下のタイプがサポートされていますが、タイプが以下のタイプでないと,kapt が error発生する可能性があります 82 | 83 | ```bash 84 | 85 | :Parcelable 86 | 87 | String 88 | 89 | Long 90 | 91 | Int 92 | 93 | Boolean 94 | 95 | Char 96 | 97 | Byte 98 | 99 | Float 100 | 101 | Double 102 | 103 | Short 104 | 105 | CharSequence 106 | 107 | CharArray 108 | 109 | IntArray 110 | 111 | LongArray 112 | 113 | BooleanArray 114 | 115 | DoubleArray 116 | 117 | FloatArray 118 | 119 | ByteArray 120 | 121 | ArrayList 122 | 123 | ArrayList 124 | 125 | ArrayList 126 | 127 | ArrayList<:Parcelable> 128 | 129 | Array<:Parcelable> 130 | ``` 131 | 132 | 133 | #########使用######### 134 | 135 | プロジェクト : build.gradle 136 | ``` 137 | buildscript { 138 | repositories { 139 | maven { url 'https://www.jitpack.io' } 140 | } 141 | ``` 142 | モジュール : build.gradle 143 | 144 | ``` 145 | apply plugin: 'kotlin-android-extensions' 146 | apply plugin: 'kotlin-kapt' 147 | 148 | android { 149 | androidExtensions { 150 | experimental = true 151 | } 152 | } 153 | 154 | kapt com.github.smartbackme.AutoPage:autopage-processor:1.0.8 155 | implementation com.github.smartbackme.AutoPage:autopage:1.0.8 156 | ``` 157 | 158 | **重点** 159 | 160 | *kotlin:* 161 | 1. @JvmField @AutoPage 162 | 2. onCreate 中 AutoJ.inject(this) を追加します 163 | 164 | *java:* 165 | 1. @AutoPage 166 | 2. onCreate 中 AutoJ.inject(this) を追加します 167 | 168 | 169 | ######### Activity 中使用######### 170 | ## 例1 171 | 簡単なジャンプ 172 | 173 | ``` 174 | @AutoPage 175 | class SimpleJump1Activity : AppCompatActivity() { 176 | override fun onCreate(savedInstanceState: Bundle?) { 177 | super.onCreate(savedInstanceState) 178 | setContentView(R.layout.activity_simple_jump1) 179 | } 180 | } 181 | ``` 182 | 後で 183 | 184 | ``` 185 | ApSimpleJump1Activity.newInstance().start(this) 186 | ``` 187 | 188 | ## 例2 189 | 簡単なジャンプとパラメータ付き 190 | ``` 191 | class MainActivity2 : AppCompatActivity() { 192 | 193 | @AutoPage 194 | @JvmField 195 | var message:String? = null 196 | 197 | override fun onCreate(savedInstanceState: Bundle?) { 198 | super.onCreate(savedInstanceState) 199 | setContentView(R.layout.activity_main2) 200 | AutoJ.inject(this) 201 | findViewById(R.id.text).text = message 202 | } 203 | } 204 | ``` 205 | 後で 206 | 207 | ``` 208 | ApMainActivity2.newInstance().apply { 209 | message = "123" 210 | } .start(this) 211 | ``` 212 | 213 | ## 例3: 214 | resultがある 215 | 216 | ``` 217 | @AutoPage 218 | class SimpleJumpResultActivity : AppCompatActivity() { 219 | override fun onCreate(savedInstanceState: Bundle?) { 220 | super.onCreate(savedInstanceState) 221 | setContentView(R.layout.activity_simple_jump_result) 222 | } 223 | 224 | override fun onBackPressed() { 225 | var intent = Intent() 226 | intent.putExtra("message","123") 227 | setResult(RESULT_OK,intent) 228 | super.onBackPressed() 229 | } 230 | } 231 | ``` 232 | 後で 233 | 234 | ``` 235 | ApSimpleJumpResultActivity.newInstance().apply { 236 | requestCode = 1 237 | }.start(this) 238 | ``` 239 | 240 | ## 例4: 241 | model転送 242 | 243 | ''' 244 | @Parcelize 245 | data class MyData(var message:String,var hehehe: Boolean,var temp :Int):Parcelable 246 | ''' 247 | 248 | ``` 249 | class AllDataActivity : AppCompatActivity() { 250 | 251 | @AutoPage 252 | @JvmField 253 | var myData:MyData? = null 254 | @AutoPage 255 | @JvmField 256 | var message:String? = "this is default value" 257 | override fun onCreate(savedInstanceState: Bundle?) { 258 | super.onCreate(savedInstanceState) 259 | 260 | setContentView(R.layout.activity_all_data) 261 | AutoJ.inject(this) 262 | 263 | 264 | Toast.makeText(this,myData?.toString()+message,Toast.LENGTH_LONG).show() 265 | } 266 | } 267 | ``` 268 | 後で 269 | 270 | ``` 271 | ApAllDataActivity.newInstance().apply { 272 | message = "123" 273 | myData = MyData("hfafas",true,21) 274 | ``` 275 | 276 | ## 例5: 277 | default valur 278 | 279 | ``` 280 | class DefaultValueActivity : AppCompatActivity() { 281 | 282 | @AutoPage 283 | @JvmField 284 | var message:String? = "this is default value" 285 | 286 | override fun onCreate(savedInstanceState: Bundle?) { 287 | super.onCreate(savedInstanceState) 288 | setContentView(R.layout.activity_default_value) 289 | AutoJ.inject(this) 290 | // var args = intent.getParcelableExtra("123") 291 | findViewById