Android開源:Meepo-類似 Retrofit 的跳轉路由
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