1.在IOS中绑定类
@interface ClassName : ExtendedClassName<ImplementedInterfaceName>
那么在java中就应该是:
@NativeClass public class GADBannerView extends UIView { }
这里一般形式是:
@NativeClass public class GADBannerView extends NSObject { }
2.在IOS中绑定方法
- (void)loadRequest:(GADRequest *)request;
在java中
@Method(selector = "loadRequest:")//必须和IOS里面的方法名一样 不然无法找到 public native void loadRequest(GADRequest request);//这里方法名可以任意写 但是参数必须一样
如果有多个参数的方法呢?
- (void)setLocationWithLatitude:(CGFloat)latitude longitude:(CGFloat)longitude accuracy:(CGFloat)accuracyInMeters;
在java写法是这样的:
@Method(selector = "setLocationWithLatitude:longitude:accuracy:") public native void setLocation(float latitude, float longitude, float accuracyInMeters);
3.在IOS中绑定构造方法
- (id)initWithAdSize:(GADAdSize)size;
那么在java中实现:
@Method(selector = "initWithAdSize:") private native @Pointer long init(GADAdSize size);//构造方法需要值,因为GADAdSize实际上是long类型
这里的方法写成私有的,因为不是任何人都可以调用的,所以还得写个java里的构造方法
public GADBannerView(GADAdSize size) { super((SkipInit)null); initObject(init(size)); }
必须这样写,不然会被java调用两次
4.在IOS中绑定成员变量
在IOS中有很多很简便的写法,可以让开发者少些很多代码
@property(nonatomic, copy) NSString *adUnitID;
property这个意思是OC会自动实现getter和setter 不用手动实现,那么我们知道他的意思后就很好绑定了,和绑定方法一样一样的
@Property(selector = "adUnitID") public native String getAdUnitID (); @Property(selector = "setAdUnitID:") public native void setAdUnitID (String id);
注意:并不是所有属性都有getter和setter的 有些只有getter比如:
@property(nonatomic, readonly) BOOL hasAutoRefreshed;
还有一种写法在绑定的时候必须强引用,不然程序会报错:
@property(nonatomic, assign) NSObject<GADBannerViewDelegate> *delegate
在绑定的时候必须这样写:
@Property(selector = "delegate") public native GADBannerViewDelegate getDelegate(); @Property(selector = "setDelegate:", strongRef = true) public native void setDelegate(GADBannerViewDelegate delegate);
5.在IOS中绑定枚举类型
typedef NS_ENUM(NSInteger, GADGender) { kGADGenderUnknown, ///< Unknown gender. kGADGenderMale, ///< Male gender. kGADGenderFemale ///< Female gender. };
在java中这样写:
typedef enum { kGADGenderUnknown, ///< Unknown gender. kGADGenderMale, ///< Male gender. kGADGenderFemale ///< Female gender. } GADGender;
以上写法精简自:https://github.com/BlueRiverInteractive/robovm-ios-bindings
libgdx与Robovm绑定的一些方法
时间: 2024-12-21 12:16:29