Skip to content

Commit 4db5a54

Browse files
committed
Added getResources() on Activity, Resource and DisplayMetrics classes.
1 parent f3bff57 commit 4db5a54

File tree

4 files changed

+256
-0
lines changed

4 files changed

+256
-0
lines changed

Sources/AndroidNamespace.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ public enum Android: JavaPackage {
3030

3131
public static let package: JNIPackage = Android.Content.package + ["pm"]
3232
}
33+
34+
public enum Res: JavaPackage {
35+
36+
public static let package: JNIPackage = Android.Content.package + ["res"]
37+
}
3338
}
3439

3540
public enum Widget: JavaPackage {

Sources/AppCompatActivity.swift

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,31 @@ open class SwiftSupportAppCompatActivity: AndroidContextWrapper {
252252
return result!
253253
}
254254

255+
public func getResources() -> Android.Content.Res.Resources? {
256+
257+
var __locals = [jobject]()
258+
259+
var __args = [jvalue]( repeating: jvalue(), count: 2)
260+
261+
var result: Android.Content.Res.Resources?
262+
263+
withJavaObject {
264+
265+
let __return = JNIMethod.CallObjectMethod(object: $0,
266+
methodName: "getResources",
267+
methodSig: "()Landroid/content/res/Resources;",
268+
methodCache: &SwiftActivityJNICache.MethodID.getResources,
269+
args: &__args,
270+
locals: &__locals)
271+
272+
defer { JNI.DeleteLocalRef(__return) }
273+
274+
result = __return != nil ? Android.Content.Res.Resources(javaObject: __return) : nil
275+
}
276+
277+
return result!
278+
}
279+
255280
public func setContentView(layoutResID: Int) {
256281

257282
var __locals = [jobject]()
@@ -468,6 +493,7 @@ fileprivate extension SwiftSupport.App.AppCompatActivity {
468493
static var findViewById: jmethodID?
469494
static var getDensity: jmethodID?
470495
static var addContentView: jmethodID?
496+
static var getResources: jmethodID?
471497
}
472498
}
473499
}

Sources/ContentResResources.swift

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
//
2+
// ContentResResources.swift
3+
// Android
4+
//
5+
// Created by Marco Estrella on 7/20/18.
6+
//
7+
8+
import Foundation
9+
import java_swift
10+
import java_lang
11+
import JNI
12+
13+
public extension Android.Content.Res {
14+
15+
public typealias Resources = AndroidContentResResources
16+
}
17+
18+
public class AndroidContentResResources: JavaObject {
19+
20+
// MARK: - Initialization
21+
22+
public convenience init?( casting object: java_swift.JavaObject,
23+
_ file: StaticString = #file,
24+
_ line: Int = #line ) {
25+
26+
self.init(javaObject: nil)
27+
28+
object.withJavaObject {
29+
self.javaObject = $0
30+
}
31+
}
32+
33+
public required init( javaObject: jobject? ) {
34+
super.init(javaObject: javaObject)
35+
}
36+
}
37+
38+
// MARK: - Methods
39+
40+
public extension AndroidContentResResources {
41+
42+
public func getDisplayMetrics() -> Android.Util.DisplayMetrics? {
43+
44+
var __locals = [jobject]()
45+
46+
var __args = [jvalue]( repeating: jvalue(), count: 1 )
47+
48+
let __return = JNIMethod.CallObjectMethod(
49+
object: javaObject,
50+
methodName: "getDisplayMetrics",
51+
methodSig: "()Landroid/util/DisplayMetrics;",
52+
methodCache: &JNICache.MethodID.getDisplayMetrics,
53+
args: &__args,
54+
locals: &__locals )
55+
56+
defer { JNI.DeleteLocalRef( __return ) }
57+
58+
return __return != nil ? Android.Util.DisplayMetrics(javaObject: __return) : nil
59+
}
60+
}
61+
62+
// MARK: - JNICache
63+
64+
internal extension AndroidContentResResources {
65+
66+
/// JNI Cache
67+
struct JNICache {
68+
69+
/// JNI Java class signature
70+
static let classSignature = Android.Content.Res.className(["Resources"])
71+
72+
/// JNI Java class name
73+
static let className = classSignature.rawValue
74+
75+
/// JNI Java class
76+
static var jniClass: jclass?
77+
78+
/// JNI Method ID cache
79+
struct MethodID {
80+
static var getString: jmethodID?
81+
static var getDisplayMetrics: jmethodID?
82+
static var getIdentifier: jmethodID?
83+
}
84+
}
85+
}

Sources/UtilDisplayMetrics.swift

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
//
2+
// UtilDisplayMetrics.swift
3+
// Android
4+
//
5+
// Created by Marco Estrella on 7/20/18.
6+
//
7+
8+
import Foundation
9+
import java_swift
10+
import java_lang
11+
import JNI
12+
13+
public extension Android.Util {
14+
15+
public typealias DisplayMetrics = AndroidUtilDisplayMetrics
16+
}
17+
18+
public class AndroidUtilDisplayMetrics: JavaObject {
19+
20+
// MARK: - Initialization
21+
22+
public convenience init?( casting object: java_swift.JavaObject,
23+
_ file: StaticString = #file,
24+
_ line: Int = #line ) {
25+
26+
self.init(javaObject: nil)
27+
28+
object.withJavaObject {
29+
self.javaObject = $0
30+
}
31+
}
32+
33+
public required init( javaObject: jobject? ) {
34+
super.init(javaObject: javaObject)
35+
}
36+
}
37+
38+
// MARK: - Methods
39+
40+
public extension AndroidUtilDisplayMetrics {
41+
42+
public var density: Float {
43+
get {
44+
let __value = JNIField.GetFloatField(fieldName: "density",
45+
fieldType: "F",
46+
fieldCache: &JNICache.FieldID.density,
47+
object: javaObject)
48+
return Float(__value)
49+
}
50+
}
51+
52+
public var densityDpi: Int {
53+
get {
54+
let __value = JNIField.GetIntField(fieldName: "densityDpi",
55+
fieldType: "I",
56+
fieldCache: &JNICache.FieldID.densityDpi,
57+
object: javaObject)
58+
return Int(__value)
59+
}
60+
}
61+
62+
public var heightPixels: Int {
63+
get {
64+
let __value = JNIField.GetIntField(fieldName: "heightPixels",
65+
fieldType: "I",
66+
fieldCache: &JNICache.FieldID.heightPixels,
67+
object: javaObject)
68+
return Int(__value)
69+
}
70+
}
71+
72+
public var scaledDensity: Float {
73+
get {
74+
let __value = JNIField.GetFloatField(fieldName: "scaledDensity",
75+
fieldType: "F",
76+
fieldCache: &JNICache.FieldID.scaledDensity,
77+
object: javaObject)
78+
return Float(__value)
79+
}
80+
}
81+
82+
public var widthPixels: Int {
83+
get {
84+
let __value = JNIField.GetIntField(fieldName: "widthPixels",
85+
fieldType: "I",
86+
fieldCache: &JNICache.FieldID.widthPixels,
87+
object: javaObject)
88+
return Int(__value)
89+
}
90+
}
91+
92+
public var xdpi: Float {
93+
get {
94+
let __value = JNIField.GetFloatField(fieldName: "xdpi",
95+
fieldType: "F",
96+
fieldCache: &JNICache.FieldID.xdpi,
97+
object: javaObject)
98+
return Float(__value)
99+
}
100+
}
101+
102+
public var ydpi: Float {
103+
get {
104+
let __value = JNIField.GetFloatField(fieldName: "ydpi",
105+
fieldType: "F",
106+
fieldCache: &JNICache.FieldID.ydpi,
107+
object: javaObject)
108+
return Float(__value)
109+
}
110+
}
111+
}
112+
113+
// MARK: - JNICache
114+
115+
internal extension AndroidUtilDisplayMetrics {
116+
117+
/// JNI Cache
118+
struct JNICache {
119+
120+
/// JNI Java class signature
121+
static let classSignature = Android.Util.className(["DisplayMetrics"])
122+
123+
/// JNI Java class name
124+
static let className = classSignature.rawValue
125+
126+
/// JNI Java class
127+
static var jniClass: jclass?
128+
129+
/// JNI Method ID cache
130+
struct FieldID {
131+
static var density: jmethodID?
132+
static var densityDpi: jmethodID?
133+
static var heightPixels: jmethodID?
134+
static var scaledDensity: jmethodID?
135+
static var widthPixels: jmethodID?
136+
static var xdpi: jmethodID?
137+
static var ydpi: jmethodID?
138+
}
139+
}
140+
}

0 commit comments

Comments
 (0)