परिचय
यह उदाहरण दर्शाता है कि Kotlin का उपयोग करके Android में पेजिनेशन टेक्स्ट कैसे बनाया जाए।
चरण 1: नया प्रोजेक्ट बनाएं
Android Studio खोलें, File → New Project पर जाएं और आवश्यक विवरण भरकर एक नया प्रोजेक्ट बनाएं।
चरण 2: activity_main.xml लेआउट जोड़ें
res/layout/activity_main.xml में निम्न कोड जोड़ें:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="16dp"
android:paddingTop="16dp"
android:paddingRight="16dp"
android:paddingBottom="16dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/buttonBack"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@android:color/transparent" />
<Button
android:id="@+id/buttonForward"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@android:color/transparent" />
</LinearLayout>
<TextView
android:id="@+id/tv"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
चरण 3: MainActivity.kt लागू करें
src/MainActivity.kt में निम्न कोड जोड़ें:
import android.graphics.Color
import android.graphics.Typeface
import android.os.Bundle
import android.text.Html
import android.text.Spannable
import android.text.SpannableString
import android.text.TextUtils
import android.text.style.ForegroundColorSpan
import android.text.style.RelativeSizeSpan
import android.text.style.StyleSpan
import android.view.ViewTreeObserver
import android.widget.Button
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
lateinit var buttonBack: Button
lateinit var buttonForward: Button
private lateinit var textView: TextView
private var pagination: Pagination? = null
private lateinit var charSequence: CharSequence
private var currentIndex = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
title = "KotlinApp"
buttonBack = findViewById(R.id.buttonBack)
buttonForward = findViewById(R.id.buttonForward)
textView = findViewById(R.id.tv)
val htmlString = Html.fromHtml(getString(R.string.html_string))
val spanString = SpannableString(getString(R.string.long_string))
spanString.setSpan(ForegroundColorSpan(Color.BLUE), 0, 24, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
spanString.setSpan(RelativeSizeSpan(2f), 0, 24, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
spanString.setSpan(StyleSpan(Typeface.MONOSPACE.style), 0, 24, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
spanString.setSpan(ForegroundColorSpan(Color.BLUE), 536, spanString.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
spanString.setSpan(RelativeSizeSpan(2f), 536, spanString.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
spanString.setSpan(StyleSpan(Typeface.MONOSPACE.style), 536, spanString.length, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
charSequence = TextUtils.concat(htmlString, spanString)
textView.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {
override fun onGlobalLayout() {
// एकाधिक कॉल से बचने के लिए लेआउट लिस्टनर हटाएं
textView.viewTreeObserver.removeOnGlobalLayoutListener(this)
pagination = Pagination(
charSequence, textView.width,
textView.height,
textView.paint,
textView.lineSpacingMultiplier,
textView.lineSpacingExtra,
textView.includeFontPadding
)
update()
}
})
buttonBack.setOnClickListener {
currentIndex = if (currentIndex > 0) currentIndex - 1 else 0
update()
}
buttonForward.setOnClickListener {
currentIndex = if (currentIndex < pagination!!.size() - 1) currentIndex + 1 else pagination!!.size() - 1
update()
}
}
private fun update() {
val text = pagination!![currentIndex]
if (text != null) textView.text = text
}
}
चरण 4: Pagination क्लास बनाएं
एक नई Kotlin क्लास Pagination.kt बनाएं और निम्न कोड जोड़ें:
import android.graphics.Paint
import android.text.Layout
import android.text.TextPaint
import android.text.TextUtils
class Pagination(
private val text: CharSequence,
private val width: Int,
private val height: Int,
private val paint: TextPaint,
private val lineSpacingMultiplier: Float,
private val lineSpacingExtra: Float,
private val includeFontPadding: Boolean
) {
private val pages = mutableListOf<CharSequence>()
init {
val layout = Layout.Builder.obtain(text, 0, text.length, paint, width)
.setLineSpacing(lineSpacingExtra, lineSpacingMultiplier)
.setIncludePad(includeFontPadding)
.build()
var lineStart = 0
for (i in 0 until layout.lineCount) {
val lineEnd = layout.getLineEnd(i)
val lineText = TextUtils.substring(text, lineStart, lineEnd)
pages.add(lineText)
lineStart = lineEnd
}
}
operator fun get(index: Int): CharSequence? {
return if (index in pages.indices) pages[index] else null
}
fun size(): Int = pages.size
}
चरण 5: AndroidManifest.xml कॉन्फ़िगर करें
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
package="com.example.q11">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
एप्लिकेशन चलाएं
अपने Android डिवाइस को कंप्यूटर से कनेक्ट करें। Android Studio में प्रोजेक्ट की एक्टिविटी फाइल खोलें और टूलबार से Run आइकन पर क्लिक करें। अपना मोबाइल डिवाइस चुनें और डिफ़ॉल्ट स्क्रीन देखें।