• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

GoRouter: The most lightweight router library in android.If you need to do multi ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

GoRouter

开源软件地址:

https://gitee.com/rubintry/GoRouter

开源软件介绍:

最轻量级的安卓路由框架

Javadoc

GitHub license

最新版本

moduleGoRouter-apiGoRouter-compilerGoRouter-annotation
versionVersionVersionVersion

示例代码

特性

  1. 支持多模块开发
  2. 完美支持Activity
  3. 支持获取fragment实例
  4. 支持InstantRun support
  5. 支持MultiDex support(google)
  6. 支持AndroidX
  7. 支持kotlin混合编译

如何引入?

config.gradle

    dependencies{        implementation 'cn.rubintry:gorouter-api:1.0.30'        //Java        annotationProcessor  'cn.rubintry:gorouter-compiler:1.0.5'        //Kotlin        kapt  'cn.rubintry:gorouter-compiler:1.0.5'    }

如何构建你的工程?

gradle.properties

    //如果你需要将module作为application来运行,你需要将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 "子模块的包名"        }        ...    }    sourceSets{        main {            if(moduleIsApplication.toBoolean().booleanValue()){                //如果你想将其以application的方式来运行module,使用默认生成的AndroidManifest.xml即可                manifest.srcFile 'src/main/AndroidManifest.xml'            }else{                //若你想将其以library的方式来运行module,你需要在以下目录下创建一个AndroidManifest.xml文件并按照以下格式编写                manifest.srcFile 'src/main/manifest/AndroidManifest.xml'            }        }    }}

以library方式运行module时所需的AndroidManifest.xml

    <?xml version="1.0" encoding="utf-8"?>    <manifest xmlns:android="http://schemas.android.com/apk/res/android"        package="你的子模块包名">        <application>            <activity android:name="你的子模块里的activity">            </activity>        </application>    </manifest>

如何使用此框架?

Fragment

   //获得一个fragment实例   Fragment instance = GoRouter.getInstance().build("fragmentRouteKey").go()        

Activity篇

   //导航到指定activity   GoRouter.getInstance().build("routeKey2").go()   //携带数据   Bundle data = new Bundle()   data.putInt(key , value);   GoRouter.getInstance().build("routeKey2" , data).go()

目标 Activity

    /**    * @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篇

Layout

activity1

   <TextView        android:id="@+id/tv"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="activity1"        app:layout_constraintTop_toTopOf="parent"        app:layout_constraintStart_toStartOf="parent"        app:layout_constraintEnd_toEndOf="parent"        android:transitionName="sharedActivity"        android:textSize="50sp"></TextView>

activity2

   <TextView        android:id="@+id/tv1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="activity1"        app:layout_constraintTop_toTopOf="parent"        app:layout_constraintStart_toStartOf="parent"        app:layout_constraintEnd_toEndOf="parent"        android:transitionName="sharedActivity"        android:textSize="50sp"></TextView>
   //Activity1   //以带有共享元素动画的方式跳转   tv = findViewById(R.id.tv);   GoRouter.getInstance().build("activity1 's routeKey")   .go(this , ActivityOptionsCompat.makeSceneTransitionAnimation(this , tv , tv.getTransitionName()).toBundle())

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap