Kotlin
कोटलिन Android एक्सटेंशन
खोज…
परिचय
कोटलिन में एंड्रॉइड के लिए एक अंतर्निर्मित दृश्य इंजेक्शन है, जो मैनुअल बाइंडिंग को छोड़ देता है या बटरकनीफ़ जैसे फ्रेमवर्क की आवश्यकता होती है। कुछ फायदे एक अच्छे वाक्यविन्यास, बेहतर स्थैतिक टाइपिंग और इस तरह कम त्रुटि वाले हैं।
विन्यास
ठीक से कॉन्फ़िगर की गई प्रोजेक्ट के साथ प्रारंभ करें।
अपने प्रोजेक्ट-लोकल (टॉप-लेवल नहीं) build.gradle
अपने build.gradle
प्लगइन के नीचे एक्स्टेंशन एक्सटेंशन प्लगइन डिक्लेरेशन, टॉप-लेवल इंडेंटेशन लेवल पर।
buildscript {
...
}
apply plugin: "com.android.application"
...
apply plugin: "kotlin-android"
apply plugin: "kotlin-android-extensions"
...
दृश्यों का उपयोग करना
यह मानते हुए कि हमारे पास एक गतिविधि है जिसका उदाहरण लेआउट है, जिसे activity_main.xml
कहा जाता activity_main.xml
:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/my_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="My button"/>
</LinearLayout>
हम बिना किसी अतिरिक्त बंधन के बटन को कॉल करने के लिए कोटलिन एक्सटेंशन का उपयोग कर सकते हैं:
import kotlinx.android.synthetic.main.activity_main.my_button
class MainActivity: Activity() {
override fun onCreate(savedInstanceBundle: Bundle?) {
super.onCreate(savedInstanceBundle)
setContentView(R.layout.activity_main)
// my_button is already casted to a proper type of "Button"
// instead of being a "View"
my_button.setText("Kotlin rocks!")
}
}
आप लेआउट में दिखाई देने वाली सभी आईडी को *
नोटेशन से भी आयात कर सकते हैं
// my_button can be used the same way as before
import kotlinx.android.synthetic.main.activity_main.*
कृत्रिम विचारों का उपयोग गतिविधियों के बाहर नहीं किया जा सकता / टुकड़े / उस दृश्य के साथ दृश्य फुलाया जाता है:
import kotlinx.android.synthetic.main.activity_main.my_button
class NotAView {
init {
// This sample won't compile!
my_button.setText("Kotlin rocks!")
}
}
उत्पाद जायके
एंड्रॉइड एक्सटेंशन कई एंड्रॉइड प्रोडक्ट फ्लेवर के साथ भी काम करते हैं। उदाहरण के लिए अगर हम build.gradle
में जायके की तरह है:
android {
productFlavors {
paid {
...
}
free {
...
}
}
}
और उदाहरण के लिए, केवल नि: शुल्क स्वाद में एक खरीद बटन है:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/buy_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Buy full version"/>
</LinearLayout>
हम विशेष रूप से स्वाद के लिए बाध्य कर सकते हैं:
import kotlinx.android.synthetic.free.main_activity.buy_button
नोटिस पाने के लिए दर्द निवारक श्रोता, जब दृश्य पूरी तरह से तैयार हो गया है तो कोटलिन के विस्तार के साथ इतना सरल और भयानक है
mView.afterMeasured {
// inside this block the view is completely drawn
// you can get view's height/width, it.height / it.width
}
हुड के नीचे
inline fun View.afterMeasured(crossinline f: View.() -> Unit) {
viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
override fun onGlobalLayout() {
if (measuredHeight > 0 && measuredWidth > 0) {
viewTreeObserver.removeOnGlobalLayoutListener(this)
f()
}
}
})
}