سلام دوستان در این سری از آموزش برنامه نویسی به آموزش گرفتن ScreenShot به زبان کوتلین در برنامه نویسی اندروید می پردازیم قبلا آموزش گرفتن عکس از صفحه را در برنامه نویسی اندروید به زبان جاوا برای شما قرار دادیم امروز با زبان کوتلین آن را برای شما قرار می دهیم در ادامه با ما همراه باشید.
ابتدا قبل از اینکه شروع به برنامه نویسی کنید لازم است تا زبان کوتلین را به اندروید استودیو اضافه کنیم برای اینکار از آموزش زیر استفاده کنید.
وارد فایل AndroidManifest.xml شده و دسترسی های زیر را اضافه کنید.
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
یک layout به نام activity_main.xml داریم که در آن یک Button قرار گرفته شده است همانند زیر
?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="350dp"
android:layout_height="450dp"
android:background="@color/colorAccent"
tools:context=".MainActivity">
<Button
android:text="Button"
android:textAllCaps="false"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="43dp"
android:id="@+id/button"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
در اکیویتی مربوط به آن که نام آن برابر با MainActivity.kt است کدهای زیر را قرار دهید.
package ir.programchi
import android.graphics.Bitmap
import android.graphics.Canvas
import android.os.Environment
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.view.View
import java.io.File
import java.io.FileOutputStream
import java.util.Random
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val bitmap = loadBitmapFromView(findViewById(R.id.activity_main), 350, 450)
saveImage(bitmap)
}
companion object {
fun saveImage(bitmap: Bitmap) {
val root = Environment.getExternalStorageDirectory().toString()
val myDir = File(root + "/req_images")
myDir.mkdirs()
val generator = Random()
var n = 10000
n = generator.nextInt(n)
val fname = "Image-$n.jpg"
val file = File(myDir, fname)
// Log.i(TAG, "" + file);
if (file.exists())
file.delete()
try {
val out = FileOutputStream(file)
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out)
out.flush()
out.close()
} catch (e: Exception) {
e.printStackTrace()
}
}
fun loadBitmapFromView(v: View, width: Int, height: Int): Bitmap {
val b = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
val c = Canvas(b)
v.layout(0, 0, v.layoutParams.width, v.layoutParams.height)
v.draw(c)
return b
}
}
}
در بالا ابتدا scree گرفته می شود و سپس در sd کار ذخیره می شود اگر دقت کنید عمل لوگ گیری را نیز انجام داده ایم دو تا void داریم یکیش فایل ذخهیر شده را در layout قرار میی دهد و دیگری عمل ذخیره سازی را انجام می دهد.
این آموزش هم به پایان رسید.
موفق باشید.
مطالعه بیشتر