Skip to content

Commit f8da7d1

Browse files
committed
Added ViewCompat
1 parent 56a5072 commit f8da7d1

File tree

2 files changed

+79
-0
lines changed

2 files changed

+79
-0
lines changed

Sources/AndroidNamespace.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,16 @@ public enum SupportV7: JavaPackage {
8383
}
8484
}
8585

86+
public enum SupportV4: JavaPackage {
87+
88+
public static let package: JNIPackage = ["android", "support", "v4"]
89+
90+
public enum View: JavaPackage {
91+
92+
public static let package: JNIPackage = SupportV4.package + ["view"]
93+
}
94+
}
95+
8696
/// Support Library namespace.
8797
public enum SwiftSupport: JavaPackage {
8898

Sources/ViewCompat.swift

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
//
2+
// ViewCompat.swift
3+
// Android
4+
//
5+
// Created by Marco Estrella on 8/29/18.
6+
//
7+
8+
import Foundation
9+
import java_swift
10+
import JNI
11+
12+
public extension Android.Graphics.Drawable {
13+
14+
public typealias ViewCompat = AndroidViewCompat
15+
}
16+
17+
open class AndroidViewCompat: JavaObject {
18+
19+
public required init(javaObject: jobject?) {
20+
super.init(javaObject: javaObject)
21+
}
22+
23+
public convenience init?( casting object: JavaObject, _ file: StaticString = #file, _ line: Int = #line ) {
24+
self.init( javaObject: nil )
25+
object.withJavaObject {
26+
self.javaObject = $0
27+
}
28+
}
29+
}
30+
31+
public extension AndroidViewCompat {
32+
33+
public static func generateViewId() -> Int {
34+
35+
var __locals = [jobject]()
36+
37+
var __args = [jvalue]( repeating: jvalue(), count: 1 )
38+
39+
let __return = JNIMethod.CallStaticIntMethod(className: JNICache.className,
40+
classCache: &JNICache.jniClass,
41+
methodName: "wrap",
42+
methodSig: "()I",
43+
methodCache: &JNICache.MethodID.generateViewId,
44+
args: &__args,
45+
locals: &__locals )
46+
return Int(__return)
47+
}
48+
}
49+
50+
internal extension AndroidViewCompat {
51+
52+
/// JNI Cache
53+
struct JNICache {
54+
55+
static let classSignature = SupportV4.View.className(["ViewCompat"])
56+
57+
/// JNI Java class name
58+
static let className = classSignature.rawValue
59+
60+
/// JNI Java class
61+
static var jniClass: jclass?
62+
63+
/// JNI Method ID cache
64+
struct MethodID {
65+
66+
static var generateViewId: jmethodID?
67+
}
68+
}
69+
}

0 commit comments

Comments
 (0)