transfuse
transfuse copied to clipboard
Support for Library Rs
Android libraries use R
classes without public static final
(http://tools.android.com/tips/non-constant-fields):
public final class R {
public static final class anim {
public static int abc_fade_in=0x7f040000;
public static int abc_fade_out=0x7f040001;
...
This means you can't reference these fields from an annotation as there are not considered constants. The previous alternative was to use tags, which looses compile time checking. This PR gives an alternative way...
This PR adds a secondary annotation processor to generate a R class with public static final
analogies for library public final
non-static
. Transfuse, in turn, recognizes these analogies and swaps in the original R library identifier. The only requirement is to annotate your source with the Bridge
annotation:
@Bridge(R.class)
public class ...
Then you may use RBridge
instead of R
in any Transfuse annotation:
@Layout(RBridge.layout.main)
@View(RBridge.view.button)
❤️
@johncarl81 thoughts on merging to master?
I have a couple changes I made recently to be able to publish this on maven central. I have a couple other tweaks to make, mainly to accommodate other libraries that use the base. Then it's time for prime time.
great.. do those changes change anything about the usage as I know it right now?
They may affect how you reference the rbridge library.
Ok @dbachelder, could you review the latest changes?
@johncarl81 I like that you've moved it into TF proper.. would you mind pushing this up as the snapshot release and I'll try it one more time before we merge it?
Sure, done.