GoRouter — самый лёгкий фреймворк для маршрутизации в Android
The most lightweight Framework about router in android.
module | GoRouter-api | GoRouter-compiler | GoRouter-annotation |
---|---|---|---|
version |
config.gradle
dependencies{
//annotation
implementation 'cn.rubintry:gorouter-annotation:1.0.3'
//core api
implementation 'cn.rubintry:gorouter-api:1.0.33'
//Java
annotationProcessor 'cn.rubintry:gorouter-compiler:1.0.5'
//Kotlin
kapt 'cn.rubintry:gorouter-compiler:1.0.5'
}
gradle.properties
//If you need run sub module as Application, you should make moduleIsApplication true
moduleIsApplication = false
mainModule.gradle
apply plugin: 'com.android.application'
apply from: '../config.gradle'
dependencies {
if(!moduleIsApplication.toBoolean().booleanValue()){
implementation project(path: ':anothermodule')
}
}
anotherModule.gradle
if(moduleIsApplication.toBoolean().booleanValue()){
apply plugin: 'com.android.application'
}else{
apply plugin: 'com.android.library'
}
apply from: '../config.gradle'
android {
defaultConfig {
if(moduleIsApplication.toBoolean().booleanValue()){
applicationId "Your sub module's package name"
}
...
}
sourceSets{
main {
if(moduleIsApplication.toBoolean().booleanValue()){
//If you run this module as application , you can use the default AndroidManifest.xml
manifest.srcFile 'src/main/AndroidManifest.xml'
}else{
//If you run this module as library , you should create a new AndroidManifest liked follows
manifest.srcFile 'src/main/manifest/AndroidManifest.xml'
}
}
}
}
AndroidManifest.xml при запуске модуля как библиотеки
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="your package name">
<application>
<activity android:name="your activity in another module">
</activity>
</application>
</manifest>
//Get a fragment instance Fragment instance = GoRouter.getInstance().build("fragmentRouteKey").go()
Активность
```java
//Navigation to an Activity immediately
GoRouter.getInstance().build("routeKey2").go()
//With data
Bundle data = new Bundle()
data.putInt(key , value);
GoRouter.getInstance().build("routeKey2" , data).go()
Целевая активность
/**
* @author logcat
*/
@Route(url = "routeKey2")
public class LoginActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
``` ```
setContentView(R.layout.activity_login);
value = getIntent().getInt(key)
Activity
activity1
<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="activity1"
app:layout_constraintTopToTopOf="parent"
app:layout_constraintStartToStartOf="parent"
app:layout_constraintEndToEndOf="parent"
android:transitionName="sharedActivity"
android:textSize="50sp" />
activity2
<TextView
android:id="@+id/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="activity1"
app:layout_constraintTopToTopOf="parent"
app:layout_constraintStartToStartOf="parent"
app:layout_constraintEndToEndOf="parent"
android:transitionName="sharedActivity"
android:textSize="50sp" />
//Activity1
//navigation to another activity with animation.
tv = findViewById(R:id.tv);
GoRouter.getInstance().build("activity1 's routeKey")
.go(this, ActivityOptionsCompat.makeSceneTransitionAnimation(this, tv, tv.getTransitionName()).toBundle())
Decoupled by exposure service
/**
* Expose this service in common lib.
*/
interface SimpleService implements IProvider {
void simple(Context context);
}
/**
* Implements this service in module B and deal with it.
*/
@Route(url = "Simple/SimpleService")
public class SimpleServiceImpl implements SimpleService {
@Override
public void init(Context context) {
//Here you can do something to initialize.
}
public void simple(Context context) {
//do something
}
}
/**
* An activity in module A
*/
public class SimpleActivity extends AppCompatActivity {
@ovserride
public void oncreate(Bundle savedInstanceState) {
SimpleService service = GoRouter.getInstance()
.build("Simple/SimpleService").go(SimpleService.class);
if (service != null) {
service.simple(this.getApplicationContext());
}
}
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )