Android開源:Meepo-類似 Retrofit 的跳轉路由

fugees 7年前發布 | 13K 次閱讀 Retrofit Android開發 移動開發

Meepo

Meepo is a retrofit -like router generator for Android. You can use it to create routers for Activities, Fragments and even any things.

Install

repositories {
    maven { url "https://jitpack.io" }
}
dependencies {
    compile 'com.github.nekocode:Meepo:{lastest-version}'
}

Usage

Declare the router interface firstly. Meepo turns your navigation methods into a Java interface.

public interface Router {
    @TargetPath("user/{user_id}/detail")
    boolean gotoUserDetail(Context context, @Path("user_id") String userId, 
                           @Query("show_title") boolean showTitle);

    @TargetClass(StoreActivity.class)
    @TargetFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
    void gotoB(Context context, @Bundle("title") String title);
}

If you want to use URI to open your Activity, you need to add an <intent-filter> element in your manifest file for the corresponding <activity> element.

<activity android:name=".UserDetailActivity">
    <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.DEFAULT"/>

        <data
            android:host="meepo.com"
            android:pathPattern="/user/.*/detail"
            android:scheme="meepo"/>
    </intent-filter>
</activity>

Use the Meepo class to generate an implementation of your router interface.

final Meepo meepo = new Meepo.Builder()
        .config(new UriConfig().scheme("meepo").host("meepo.com"))
        .build();

final Router router = meepo.create(Router.class);

Now, you can use the router 's methods to navigate activity instead of startActivity() directly.

boolean isSucess = router.gotoUserDetail(this, "123", true);

Router Annonation

Meepo supports below router annonations currently:

Annonation Description
@TargetClass Declare the target Class (Such as target Activity or Fragment)
@TargetPath Declare the path of URI path (and MimeType)
@TargetAction Declare the Intent action
@TargetFlags Declare the Intent flags
@Bundle Put data into the Intent's Bundle
@Path Replace the URI path's corresponding replacement block with string parameter
@Query Query parameter of the URI
@QueryMap Map of Query parameters
@RequestCode Request code for startActivityForResult()

Custom Parser and GotoAdapter

You can create custom Parser and GotoAdapter for Meepo. See the sample for more detail. It means that you have the ability to make router for anything.

final ModuleRouter moduleRouter = new Meepo.Builder()
        .config(new ModuleConfig("TEST"))
        .parser(new ModuleParser())
        .adapter(new GotoModuleAdapter())
        .build()
        .create(ModuleRouter.class);

 

項目主頁:http://www.baiduhome.net/lib/view/home/1492653726254

 

 本文由用戶 fugees 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!