ANDROID STUDIO II
implementation 'androidx.appcompat:appcompat:1.3.1'
implementation
'com.google.android.material:material:1.4.0'
implementation
'androidx.constraintlayout:constraintlayout:2.1.1'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation
'androidx.test.ext:junit:1.1.3'
androidTestImplementation
'androidx.test.espresso:espresso-core:3.4.0'
implementation 'de.hdodenhof:circleimageview:3.1.0'
implementation 'com.github.bumptech.glide:glide:4.12.0'
implementation 'com.google.code.gson:gson:2.8.8'
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-
gson:2.9.0'
implementation 'com.squareup.okhttp3:okhttp:4.9.0'
}
4. Klik sync nowdan tunggu hingga proses build gradle selesai
5. Melakukan konfigurasi terhadap desain tambilan dengan cara mengubah
file colors.xml dengan source code berikut.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="purple_200">#FFBB86FC</color>
<color name="purple_500">#FF6200EE</color>
<color name="purple_700">#FF3700B3</color>
<color name="teal_200">#FF03DAC5</color>
<color name="teal_700">#FF018786</color>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
<color name="colorPrimary">#36B5FE</color>
<color name="colorAccent">#03DAC5</color>
<color name="colorBackground">#F8F8F8</color>
<color name="colorPrimaryDark">#1A8ED7</color>
<color name="font_default">#606060</color>
<color name="font_landing">#7D7D7D</color>
</resources>
</style>
</resources>
8. Melakukan konfigurasi pada themes.xml yang bisa dibuka melalui values
→ themes dengan cara menuliskan source code sebagai berikut.
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.modul2_kel33"
parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item
name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item
name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor"
tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
<style name="Theme.Modul2MDP2020"
parent="Theme.MaterialComponents.Light.NoActionBar">
<item
name="colorPrimary">@color/colorPrimaryDark</item>
<item
name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
</resources>
<LinearLayout
android:id="@+id/linear_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingVertical="16dp">
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/roboto_bold"
android:text="Get Data dari Rest API"
android:textColor="@color/colorPrimaryDark"
android:textSize="20sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/linear_mdp"
app:layout_constraintHorizontal_bias="0.564"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.444" />
<LinearLayout
android:id="@+id/linear_mdp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:gravity="center"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:layout_width="26dp"
android:layout_height="26dp"
android:background="@drawable/ic_logo"
app:layout_constraintBottom_toBottomOf="@+id/textView2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/textView2"
app:layout_constraintTop_toTopOf="@+id/textView2" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:fontFamily="@font/roboto"
android:text="Modul 2\nMDP 2021"
android:textColor="@color/colorPrimaryDark"
android:textSize="12sp" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/linear_title">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="72dp">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_list_user"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:listitem="@layout/item_rv_list_user" />
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>
11. Tambahkan font roboto regular dan roboto bold pada project.
package com.example.modul2_kel33;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
import android.widget.Toast;
import com.example.modul2_kel33.ApiClient;
import com.example.modul2_kel33.DataItem;
import com.example.modul2_kel33.ListUserResponse;
import com.example.modul2_kel33.RecycleAdapter;
import com.example.modul2_kel33.R;
import com.example.modul2_kel33.ApiClient;
import java.util.List;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
RecyclerView rvListUser;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rvListUser = findViewById(R.id.rv_list_user);
ApiClient.getService().getList().enqueue(new
Callback<ListUserResponse>() {
@Override
public void onResponse(Call<ListUserResponse>
call, Response<ListUserResponse> response) {
if (response.isSuccessful()) {
listItem = response.body().getData();
@Override
public void onFailure(Call<ListUserResponse>
call, Throwable t) {
Toast.makeText(getApplicationContext(),
(CharSequence) t, Toast.LENGTH_LONG).show();
}
});
}
}
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
if (service == null) {
// Membuat base URL
String BASE_URL = "https://reqres.in/";
Retrofit retrofit =
builder.client(httpClient.build()).build();
service = retrofit.create(ApiInterface.class);
}
return service;
}
}
import com.google.gson.annotations.SerializedName;
@SerializedName("last_name")
private String lastName;
@SerializedName("id")
private int id;
@SerializedName("avatar")
private String avatar;
@SerializedName("first_name")
private String firstName;
@SerializedName("email")
private String email;
@Override
public String toString(){
return
"DataItem{" +
"last_name = '" + lastName + '\'' +
",id = '" + id + '\'' +
",avatar = '" + avatar + '\'' +
",first_name = '" + firstName + '\''
+
",email = '" + email + '\'' +
"}";
}
}
import java.util.List;
import com.google.gson.annotations.SerializedName;
@SerializedName("per_page")
private int perPage;
@SerializedName("total")
private int total;
@SerializedName("data")
private List<DataItem> data;
@SerializedName("page")
private int page;
@SerializedName("total_pages")
private int totalPages;
@Override
public String toString(){
return
"ListUserResponse{" +
"per_page = '" + perPage + '\'' +
",total = '" + total + '\'' +
",data = '" + data + '\'' +
",page = '" + page + '\'' +
",total_pages = '" + totalPages +
'\'' +
"}";
}
}
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.os.Parcelable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.example.modul2_kel33.DetailActivity;
import com.example.modul2_kel33.R;
import java.util.List;
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup
viewGroup, int i) {
View v =
LayoutInflater.from(viewGroup.getContext()).inflate(R.layout
.item_rv_list_user, viewGroup, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder
viewHolder, @SuppressLint("RecyclerView") int i) {
viewHolder.tvFirstName.setText(dataUser.get(i).getFirstName(
));
viewHolder.tvLastName.setText(dataUser.get(i).getLastName())
;
viewHolder.tvEmail.setText(String.format("Email :
%s", dataUser.get(i).getEmail()));
Glide.with(mContext).load(dataUser.get(i).getAvatar()).into(
viewHolder.imgPhotoUser);
viewHolder.itemView.setOnClickListener(new
View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(mContext,
DetailActivity.class);
intent.putExtra("name",
dataUser.get(i).getFirstName());
mContext.startActivity(intent);
}
});
}
@Override
public int getItemCount() {
return dataUser.size();
}
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import com.example.modul2_kel33.R;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
tvNama = findViewById(R.id.tv_first_name);
if (getIntent().hasExtra("name")) {
String nama =
getIntent().getStringExtra("name");
tvNama.setText(nama);
}
}
}
import com.example.modul2_kel33.ListUserResponse;
import retrofit2.Call;
import retrofit2.http.GET;
@GET("api/users?page=2")
Call<ListUserResponse> getList();
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="8dp"
android:text="Tugas : Tampilkan Data dari User yang
di klik pada halaman sebelumnya kesini dan buat layout
semenarik mungkin"
android:textAlignment="center"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@+id/tv_first_name"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.89" />
<TextView
android:id="@+id/tv_first_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ID"
android:textAlignment="center"
android:textSize="24sp"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout> >
<androidx.cardview.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-
auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="8dp"
android:layout_marginTop="4dp"
android:layout_marginRight="8dp"
android:layout_marginBottom="4dp"
card_view:cardCornerRadius="4dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="16dp">
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/img_photo_user"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_marginBottom="4dp"
android:scaleType="centerCrop"
tools:src="@color/colorAccent" />
<TextView
android:id="@+id/tv_item_first_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_toEndOf="@id/img_photo_user"
android:textSize="16sp"
android:textStyle="bold"
tools:text="First Name" />
<TextView
android:id="@+id/tv_item_last_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginBottom="8dp"
android:layout_toEndOf="@id/img_photo_user"
android:layout_below="@id/tv_item_first_name"
android:textSize="12sp"
tools:text="Last Name" />
<TextView
android:id="@+id/tv_item_email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/tv_item_last_name"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_toEndOf="@id/img_photo_user"
android:ellipsize="end"
android:maxLines="5"
tools:text="Email" />
</RelativeLayout>
</androidx.cardview.widget.CardView>
<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/Theme.Modul2_kel33">
<activity android:name="DetailActivity"></activity>
<activity android:name=".MainActivity">
<intent-filter>
<action
android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="preloaded_fonts"
android:resource="@array/preloaded_fonts" />
</application>
</manifest>
package com.example.modul2_kel33;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.view.Window;
import android.view.WindowManager;
import com.example.modul2_kel33.R;
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public static void setStatusBarGradiant(Activity
activity) {
if (Build.VERSION.SDK_INT >=
Build.VERSION_CODES.LOLLIPOP) {
Window window = activity.getWindow();
Drawable background =
activity.getResources().getDrawable(R.drawable.bg_header_hom
e);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM
_BAR_BACKGROUNDS);
window.setStatusBarColor(activity.getResources().getColor(an
droid.R.color.transparent));
window.setNavigationBarColor(activity.getResources().getColo
r(android.R.color.transparent));
window.setBackgroundDrawable(background);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >=
Build.VERSION_CODES.LOLLIPOP) {
setStatusBarGradiant(this);
}
setContentView(R.layout.activity_splash_screen);
if (FirstTime.equals("No")) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent intro = new
Intent(SplashScreenActivity.this, MainActivity.class);
startActivity(intro);
finish();
overridePendingTransition(0, 0);
getIntent().addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
}
}, waktu_loading);
} else {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
SharedPreferences.Editor editor =
preferences.edit();
editor.putString("FirstTimeInstall",
"No");
editor.apply();
Intent login = new
Intent(SplashScreenActivity.this,
LandingPageActivity.class);
startActivity(login);
finish();
overridePendingTransition(0, 0);
getIntent().addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
}
}, waktu_loading);
}
}
}
26. Melakukan konfigurasi pada LandingPageActivity.java dengan
memasukan source code berikut.
package com.example.modul2_kel33;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
import androidx.viewpager2.widget.ViewPager2;
import android.app.Activity;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import com.example.modul2_kel33.OnboardingAdapter;
import com.example.modul2_kel33.OnboardingItem;
import com.example.modul2_kel33.R;
import com.google.android.material.button.MaterialButton;
import java.util.ArrayList;
import java.util.List;
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public static void setStatusBarGradiant(Activity
activity) {
if (Build.VERSION.SDK_INT >=
Build.VERSION_CODES.LOLLIPOP) {
Window window = activity.getWindow();
Drawable background =
activity.getResources().getDrawable(R.drawable.bg_header_hom
e);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM
_BAR_BACKGROUNDS);
window.setStatusBarColor(activity.getResources().getColor(an
droid.R.color.transparent));
window.setNavigationBarColor(activity.getResources().getColo
r(android.R.color.transparent));
window.setBackgroundDrawable(background);
}
}
private OnboardingAdapter onboardingAdapter;
private LinearLayout layoutOnboardingIndicators;
private MaterialButton buttonOnboardingAction;
private Button tv_lewati;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >=
Build.VERSION_CODES.LOLLIPOP) {
setStatusBarGradiant(this);
}
setContentView(R.layout.activity_landing_page);
layoutOnboardingIndicators =
findViewById(R.id.layoutOnboardingIndicators);
buttonOnboardingAction =
findViewById(R.id.buttonOnboardingAction);
buttonOnboardingAction.setBackground(ContextCompat.getDrawab
le(getApplicationContext(),R.drawable.bg_btn_blue));
tv_lewati = findViewById(R.id.tv_lewati);
setupOnboardingItems();
final ViewPager2 onboardingViewPager =
findViewById(R.id.onboardingViewPager);
onboardingViewPager.setAdapter(onboardingAdapter);
setupOnboardingIndicators();
setCurrentOnboardingIndicator(0);
onboardingViewPager.registerOnPageChangeCallback(new
ViewPager2.OnPageChangeCallback() {
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
setCurrentOnboardingIndicator(position);
}
});
tv_lewati.setOnClickListener(new
View.OnClickListener() {
@Override
public void onClick(View v) {
if (onboardingViewPager.getCurrentItem() + 1
< onboardingAdapter.getItemCount()) {
onboardingViewPager.setCurrentItem(onboardingViewPager.getCu
rrentItem() + 2);
} else {
}
}
});
buttonOnboardingAction.setOnClickListener(new
View.OnClickListener() {
@Override
public void onClick(View v) {
if (onboardingViewPager.getCurrentItem() + 1
< onboardingAdapter.getItemCount()) {
onboardingViewPager.setCurrentItem(onboardingViewPager.getCu
rrentItem() + 1);
} else {
startActivity(new
Intent(getApplicationContext(), MainActivity.class));
finish();
}
}
});
}
onboardingItems.add(landingpage1);
onboardingItems.add(landingpage2);
onboardingItems.add(landingpage3);
onboardingAdapter = new
OnboardingAdapter(onboardingItems);
indicators[i].setImageDrawable(ContextCompat.getDrawable(get
ApplicationContext(),R.drawable.onboarding_indicator_inactiv
e));
indicators[i].setLayoutParams(layoutParams);
layoutOnboardingIndicators.addView(indicators[i]);
}
imageView.setImageDrawable(ContextCompat.getDrawable(getAppl
icationContext(),R.drawable.onboarding_indicator_active));
} else {
imageView.setImageDrawable(ContextCompat.getDrawable(getAppl
icationContext(),R.drawable.onboarding_indicator_inactive));
}
}
if ( index == onboardingAdapter.getItemCount() - 1)
{
buttonOnboardingAction.setText(R.string.mulai);
} else {
buttonOnboardingAction.setText(R.string.berikutnya);
}
if ( index == onboardingAdapter.getItemCount() - 3)
{
tv_lewati.setText("Lewati");
tv_lewati.setBackground(null);
} else {
tv_lewati.setText("");
tv_lewati.setBackground(null);
}
}
}
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.example.modul2_kel33.OnboardingItem;
import com.example.modul2_kel33.R;
import java.util.List;
public OnboardingAdapter(List<OnboardingItem>
onboardingItems) {
this.onboardingItems = onboardingItems;
}
@NonNull
@Override
public OnboardingViewHolder onCreateViewHolder(@NonNull
ViewGroup parent, int viewType) {
return new OnboardingViewHolder(
LayoutInflater.from(parent.getContext()).inflate(
R.layout.item_container_onboarding,
parent, false
)
);
}
@Override
public void onBindViewHolder(@NonNull
OnboardingViewHolder holder, int position) {
holder.setOnboardingData(onboardingItems.get(position));
}
@Override
public int getItemCount() {
return onboardingItems.size();
}
textDescription.setText(onboardingItem.getDescription());
imageOnboarding.setImageResource(onboardingItem.getImage());
}
}
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/ic_logo"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ProgressBar
android:id="@+id/progressBar1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toTopOf="@+id/textView2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView"
/>
<TextView
android:id="@+id/textView2"
style="@style/TextSplash"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/roboto_bold"
android:text="Praktikum MDP 2021"
android:textSize="16sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.925" />
</androidx.constraintlayout.widget.ConstraintLayout>
31. Melakukan konfigurasi pada activity_landing_page.xml dengan
memasukan source code berikut.
ardingIndicators"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/LandingPage"
android:orientation="horizontal"
android:gravity="center"
app:layout_constraintVertical_bias="0.825"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.button.MaterialButton
android:id="@+id/buttonOnboardingAction"
style="@style/ButtonStyle"
android:textSize="16sp"
android:layout_height="50dp"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
android:layout_marginTop="24dp"
android:background="@drawable/bg_btn_blue"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/layoutOnboardingIn
dicators" />
</androidx.constraintlayout.widget.ConstraintLayout>
<ImageView
android:id="@+id/imageBack"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textLewati"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/roboto_bold"
android:textColor="@color/font_landing"
android:textSize="16sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="24dp"
android:gravity="center"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageBack">
<ImageView
android:id="@+id/imageOnboarding"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/textDescription"
style="@style/TextLanding"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<style name="TextSplash">
<item
name="android:textColor">@color/font_default</item>
<item name="android:fontFamily">@font/roboto</item>
</style>
<style name="TextLanding">
<item
name="android:textColor">@color/font_landing</item>
<item name="android:textSize">16sp</item>
<item name="android:textAlignment">center</item>
<item name="android:fontFamily">@font/roboto</item>
</style>
</resources>
<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/Theme.modul2_kel33">
<activity android:name="DetailActivity"></activity>
<activity android:name="SplashScreenActivity"
android:exported="true">
<intent-filter>
<action
android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="LandingPageActivity" />
<activity
android:name="MainActivity"
android:screenOrientation="portrait" />
<meta-data
android:name="preloaded_fonts"
android:resource="@array/preloaded_fonts" />
</application>
</manifest>