5025221154 Helsa Sriprameswari Putri - Tugas 8 Membuat Image Scroll

Membuat Image Scroll App

๐Ÿ”—Link Github : https://github.com/helsasp/Tugas8_PPB_ImageScrollApp

๐Ÿ”—Link Demo :  

๐Ÿ”Souce Code :

Affirmation.kt : 

package com.example.affirmations.model

import androidx.annotation.DrawableRes
import androidx.annotation.StringRes

data class Affirmation(
@StringRes val stringResourceId: Int,
@DrawableRes val imageResourceId: Int
)

 MainActivity,kt :

/*
* Copyright (C) 2023 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.example.affirmations

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.Image
import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.example.affirmations.data.Datasource
import com.example.affirmations.model.Affirmation
import com.example.affirmations.ui.theme.AffirmationsTheme
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material3.Card
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable

class MainActivity : ComponentActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
AffirmationsTheme {
// A surface container using the 'background' color from the theme
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colorScheme.background
) {
AffirmationsApp()
}
}
}
}
}

@Composable
fun AffirmationsApp() {
AffirmationList(
affirmationList = Datasource().loadAffirmations(),
)
}

@Composable
fun AffirmationList(affirmationList: List<Affirmation>, modifier: Modifier = Modifier) {
LazyColumn(modifier = modifier) {
items(affirmationList) { affirmation ->
AffirmationCard(
affirmation = affirmation,
modifier = Modifier.padding(8.dp)
)
}
}
}

@Composable
fun AffirmationCard(affirmation: Affirmation, modifier: Modifier = Modifier) {
Card(modifier = modifier) {
Column {
Image(
painter = painterResource(affirmation.imageResourceId),
contentDescription = stringResource(affirmation.stringResourceId),
modifier = Modifier
.fillMaxWidth()
.height(194.dp),
contentScale = ContentScale.Crop
)
Text(
text = LocalContext.current.getString(affirmation.stringResourceId),
modifier = Modifier.padding(16.dp),
style = MaterialTheme.typography.headlineSmall
)
}
}
}

@Preview
@Composable
private fun AffirmationCardPreview() {
AffirmationCard(Affirmation(R.string.affirmation1, R.drawable.image1))
}

๐Ÿ’ป Penjelasan :

๐Ÿ”ธ Affirmation.kt

mendefinisikan data class bernama Affirmation di dalam package com.example.affirmations.model.

Kelas ini memiliki dua properti:

  • stringResourceId: ID untuk string resource (misalnya teks afirmasi).

  • imageResourceId: ID untuk drawable resource (misalnya gambar yang menyertai teks).

๐Ÿ”ธ MainActivity.kt  

1. Kelas MainActivity:

 Ini adalah activity utama aplikasi. Saat aplikasi dijalankan, fungsi onCreate() akan dipanggil dan menampilkan konten UI menggunakan setContent.

2. Fungsi AffirmationsApp:

 Fungsi composable utama yang memuat daftar afirmasi dari Datasource.

3. Fungsi AffirmationList:

 Menampilkan daftar afirmasi dalam bentuk list menggunakan LazyColumn, seperti daftar yang bisa di-scroll.

4. Fungsi AffirmationCard:

 Menampilkan satu kartu afirmasi berisi gambar dan teks. Gunakan Card untuk tampilan visual yang rapi.

5. Fungsi AffirmationCardPreview:

 Fungsi pratinjau di Android Studio untuk melihat tampilan satu kartu afirmasi tanpa menjalankan aplikasi.

๐Ÿ–ผ️ App Preview :

 



Komentar

Postingan populer dari blog ini

5025221154 Helsa Sriprameswari Putri - EAS Glowin' App

5025221154 Helsa Sriprameswari Putri - ETS PPB

5025221154 Helsa Sriprameswari Putri - Tugas 6 Membuat Program Konversi Mata Uang