improve button lainnya
This commit is contained in:
		
							parent
							
								
									c55af6141f
								
							
						
					
					
						commit
						a07e7a99ac
					
				@ -2,31 +2,64 @@ package com.example.bdkipoc;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import android.content.Intent;
 | 
					import android.content.Intent;
 | 
				
			||||||
import android.os.Bundle;
 | 
					import android.os.Bundle;
 | 
				
			||||||
 | 
					import android.view.View;
 | 
				
			||||||
 | 
					import android.widget.LinearLayout;
 | 
				
			||||||
 | 
					import android.widget.TextView;
 | 
				
			||||||
import android.widget.Toast;
 | 
					import android.widget.Toast;
 | 
				
			||||||
 | 
					import android.view.animation.AccelerateDecelerateInterpolator;
 | 
				
			||||||
 | 
					import android.view.WindowManager;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import androidx.activity.EdgeToEdge;
 | 
					import androidx.activity.EdgeToEdge;
 | 
				
			||||||
import androidx.appcompat.app.AppCompatActivity;
 | 
					import androidx.appcompat.app.AppCompatActivity;
 | 
				
			||||||
import androidx.cardview.widget.CardView;
 | 
					import androidx.cardview.widget.CardView;
 | 
				
			||||||
 | 
					import androidx.constraintlayout.widget.ConstraintLayout;
 | 
				
			||||||
import androidx.core.graphics.Insets;
 | 
					import androidx.core.graphics.Insets;
 | 
				
			||||||
import androidx.core.view.ViewCompat;
 | 
					import androidx.core.view.ViewCompat;
 | 
				
			||||||
import androidx.core.view.WindowInsetsCompat;
 | 
					import androidx.core.view.WindowInsetsCompat;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.google.android.material.button.MaterialButton;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class MainActivity extends AppCompatActivity {
 | 
					public class MainActivity extends AppCompatActivity {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private boolean isExpanded = false;
 | 
				
			||||||
 | 
					    private CardView cardBantuan, cardInfoToko;
 | 
				
			||||||
 | 
					    private MaterialButton btnLainnya;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void onWindowFocusChanged(boolean hasFocus) {
 | 
				
			||||||
 | 
					    super.onWindowFocusChanged(hasFocus);
 | 
				
			||||||
 | 
					    if (hasFocus) {
 | 
				
			||||||
 | 
					        getWindow().getDecorView().setSystemUiVisibility(
 | 
				
			||||||
 | 
					            View.SYSTEM_UI_FLAG_LAYOUT_STABLE
 | 
				
			||||||
 | 
					                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
 | 
				
			||||||
 | 
					                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
 | 
				
			||||||
 | 
					                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
 | 
				
			||||||
 | 
					                | View.SYSTEM_UI_FLAG_FULLSCREEN
 | 
				
			||||||
 | 
					                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
    protected void onCreate(Bundle savedInstanceState) {
 | 
					    protected void onCreate(Bundle savedInstanceState) {
 | 
				
			||||||
 | 
					        // Enable hardware acceleration for smoother scrolling
 | 
				
			||||||
 | 
					        getWindow().setFlags(
 | 
				
			||||||
 | 
					            WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
 | 
				
			||||||
 | 
					            WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
        super.onCreate(savedInstanceState);
 | 
					        super.onCreate(savedInstanceState);
 | 
				
			||||||
        EdgeToEdge.enable(this);
 | 
					        EdgeToEdge.enable(this);
 | 
				
			||||||
        setContentView(R.layout.activity_main);
 | 
					        setContentView(R.layout.activity_main);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Ganti findViewById(R.id.main) dengan findViewById(R.id.merchant_card)
 | 
					 | 
				
			||||||
        // atau root layout yang ada di XML
 | 
					 | 
				
			||||||
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(android.R.id.content), (v, insets) -> {
 | 
					        ViewCompat.setOnApplyWindowInsetsListener(findViewById(android.R.id.content), (v, insets) -> {
 | 
				
			||||||
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
 | 
					            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
 | 
				
			||||||
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
 | 
					            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
 | 
				
			||||||
            return insets;
 | 
					            return insets;
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Initialize views
 | 
				
			||||||
 | 
					        cardBantuan = findViewById(R.id.card_bantuan);
 | 
				
			||||||
 | 
					        cardInfoToko = findViewById(R.id.card_info_toko);
 | 
				
			||||||
 | 
					        btnLainnya = findViewById(R.id.btn_lainnya);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Setup menu listeners
 | 
					        // Setup menu listeners
 | 
				
			||||||
        setupMenuListeners();
 | 
					        setupMenuListeners();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@ -42,40 +75,72 @@ public class MainActivity extends AppCompatActivity {
 | 
				
			|||||||
            R.id.card_cetak_ulang,
 | 
					            R.id.card_cetak_ulang,
 | 
				
			||||||
            R.id.card_refund,
 | 
					            R.id.card_refund,
 | 
				
			||||||
            R.id.card_settlement,
 | 
					            R.id.card_settlement,
 | 
				
			||||||
            R.id.card_histori
 | 
					            R.id.card_histori,
 | 
				
			||||||
 | 
					            R.id.card_bantuan,
 | 
				
			||||||
 | 
					            R.id.card_info_toko
 | 
				
			||||||
        };
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Cara 1: Menggunakan loop dengan if-else
 | 
					 | 
				
			||||||
        for (int cardId : cardIds) {
 | 
					        for (int cardId : cardIds) {
 | 
				
			||||||
            CardView cardView = findViewById(cardId);
 | 
					            CardView cardView = findViewById(cardId);
 | 
				
			||||||
            cardView.setOnClickListener(v -> {
 | 
					            cardView.setOnClickListener(v -> {
 | 
				
			||||||
                if (cardId == R.id.card_kartu_kredit) {
 | 
					                if (cardId == R.id.card_kartu_kredit) {
 | 
				
			||||||
                    // Arahkan ke PaymentActivity untuk Transfer
 | 
					 | 
				
			||||||
                    startActivity(new Intent(MainActivity.this, PaymentActivity.class));
 | 
					                    startActivity(new Intent(MainActivity.this, PaymentActivity.class));
 | 
				
			||||||
                } else if (cardId == R.id.card_kartu_debit) {
 | 
					                } else if (cardId == R.id.card_kartu_debit) {
 | 
				
			||||||
                    Toast.makeText(this, "Kartu Debit Diklik", Toast.LENGTH_SHORT).show();
 | 
					                    Toast.makeText(this, "Kartu Debit Diklik", Toast.LENGTH_SHORT).show();
 | 
				
			||||||
                } else if (cardId == R.id.card_qris) {
 | 
					                } else if (cardId == R.id.card_qris) {
 | 
				
			||||||
                    // Arahkan ke TransactionActivity untuk QRIS
 | 
					 | 
				
			||||||
                    startActivity(new Intent(MainActivity.this, TransactionActivity.class));
 | 
					                    startActivity(new Intent(MainActivity.this, TransactionActivity.class));
 | 
				
			||||||
                } else if (cardId == R.id.card_transfer) {
 | 
					                } else if (cardId == R.id.card_bantuan) {
 | 
				
			||||||
                    Toast.makeText(this, "Transfer Diklik", Toast.LENGTH_SHORT).show();
 | 
					                    Toast.makeText(this, "Bantuan Diklik", Toast.LENGTH_SHORT).show();
 | 
				
			||||||
                } else if (cardId == R.id.card_uang_elektronik) {
 | 
					                } else if (cardId == R.id.card_info_toko) {
 | 
				
			||||||
                    Toast.makeText(this, "Uang Elektronik Diklik", Toast.LENGTH_SHORT).show();
 | 
					                    Toast.makeText(this, "Info Toko Diklik", Toast.LENGTH_SHORT).show();
 | 
				
			||||||
                } else if (cardId == R.id.card_cetak_ulang) {
 | 
					                } else {
 | 
				
			||||||
                    Toast.makeText(this, "Cetak Ulang Diklik", Toast.LENGTH_SHORT).show();
 | 
					                    // Simplified version - just show the card ID
 | 
				
			||||||
                } else if (cardId == R.id.card_refund) {
 | 
					                    Toast.makeText(this, "Menu Diklik: " + cardId, Toast.LENGTH_SHORT).show();
 | 
				
			||||||
                    Toast.makeText(this, "Refund Diklik", Toast.LENGTH_SHORT).show();
 | 
					 | 
				
			||||||
                } else if (cardId == R.id.card_settlement) {
 | 
					 | 
				
			||||||
                    Toast.makeText(this, "Settlement Diklik", Toast.LENGTH_SHORT).show();
 | 
					 | 
				
			||||||
                } else if (cardId == R.id.card_histori) {
 | 
					 | 
				
			||||||
                    Toast.makeText(this, "Histori Diklik", Toast.LENGTH_SHORT).show();
 | 
					 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // Lainnya button listener
 | 
					        btnLainnya.setOnClickListener(v -> {
 | 
				
			||||||
        findViewById(R.id.btn_lainnya).setOnClickListener(v -> 
 | 
					            isExpanded = !isExpanded;
 | 
				
			||||||
            Toast.makeText(this, "Lainnya Diklik", Toast.LENGTH_SHORT).show()
 | 
					            
 | 
				
			||||||
        );
 | 
					            if (isExpanded) {
 | 
				
			||||||
 | 
					                // Show additional menus with animation
 | 
				
			||||||
 | 
					                cardBantuan.setVisibility(View.VISIBLE);
 | 
				
			||||||
 | 
					                cardInfoToko.setVisibility(View.VISIBLE);
 | 
				
			||||||
 | 
					                cardBantuan.setAlpha(0f);
 | 
				
			||||||
 | 
					                cardInfoToko.setAlpha(0f);
 | 
				
			||||||
 | 
					                
 | 
				
			||||||
 | 
					                cardBantuan.animate()
 | 
				
			||||||
 | 
					                    .alpha(1f)
 | 
				
			||||||
 | 
					                    .setDuration(300)
 | 
				
			||||||
 | 
					                    .setInterpolator(new AccelerateDecelerateInterpolator())
 | 
				
			||||||
 | 
					                    .start();
 | 
				
			||||||
 | 
					                    
 | 
				
			||||||
 | 
					                cardInfoToko.animate()
 | 
				
			||||||
 | 
					                    .alpha(1f)
 | 
				
			||||||
 | 
					                    .setDuration(300)
 | 
				
			||||||
 | 
					                    .setInterpolator(new AccelerateDecelerateInterpolator())
 | 
				
			||||||
 | 
					                    .start();
 | 
				
			||||||
 | 
					                    
 | 
				
			||||||
 | 
					                btnLainnya.setText("Tampilkan Lebih Sedikit");
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                // Hide additional menus with animation
 | 
				
			||||||
 | 
					                cardBantuan.animate()
 | 
				
			||||||
 | 
					                    .alpha(0f)
 | 
				
			||||||
 | 
					                    .setDuration(300)
 | 
				
			||||||
 | 
					                    .setInterpolator(new AccelerateDecelerateInterpolator())
 | 
				
			||||||
 | 
					                    .withEndAction(() -> cardBantuan.setVisibility(View.GONE))
 | 
				
			||||||
 | 
					                    .start();
 | 
				
			||||||
 | 
					                    
 | 
				
			||||||
 | 
					                cardInfoToko.animate()
 | 
				
			||||||
 | 
					                    .alpha(0f)
 | 
				
			||||||
 | 
					                    .setDuration(300)
 | 
				
			||||||
 | 
					                    .setInterpolator(new AccelerateDecelerateInterpolator())
 | 
				
			||||||
 | 
					                    .withEndAction(() -> cardInfoToko.setVisibility(View.GONE))
 | 
				
			||||||
 | 
					                    .start();
 | 
				
			||||||
 | 
					                    
 | 
				
			||||||
 | 
					                btnLainnya.setText("Lainnya");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -1,8 +1,16 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="utf-8"?>
 | 
					<?xml version="1.0" encoding="utf-8"?>
 | 
				
			||||||
<androidx.constraintlayout.widget.ConstraintLayout 
 | 
					<ScrollView
 | 
				
			||||||
    xmlns:android="http://schemas.android.com/apk/res/android"
 | 
					    xmlns:android="http://schemas.android.com/apk/res/android"
 | 
				
			||||||
    xmlns:app="http://schemas.android.com/apk/res-auto"
 | 
					    xmlns:app="http://schemas.android.com/apk/res-auto"
 | 
				
			||||||
    xmlns:tools="http://schemas.android.com/tools"
 | 
					    xmlns:tools="http://schemas.android.com/tools"
 | 
				
			||||||
 | 
					    android:layout_width="match_parent"
 | 
				
			||||||
 | 
					    android:layout_height="match_parent"
 | 
				
			||||||
 | 
					    android:fillViewport="true"
 | 
				
			||||||
 | 
					    android:overScrollMode="never"
 | 
				
			||||||
 | 
					    android:scrollbars="none"
 | 
				
			||||||
 | 
					    android:background="#FFFFFF">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <androidx.constraintlayout.widget.ConstraintLayout
 | 
				
			||||||
        android:layout_width="match_parent"
 | 
					        android:layout_width="match_parent"
 | 
				
			||||||
        android:layout_height="match_parent"
 | 
					        android:layout_height="match_parent"
 | 
				
			||||||
        android:background="#FFFFFF"
 | 
					        android:background="#FFFFFF"
 | 
				
			||||||
@ -413,6 +421,76 @@
 | 
				
			|||||||
                        style="@style/MenuCardTitle"/>
 | 
					                        style="@style/MenuCardTitle"/>
 | 
				
			||||||
                </LinearLayout>
 | 
					                </LinearLayout>
 | 
				
			||||||
            </androidx.cardview.widget.CardView>
 | 
					            </androidx.cardview.widget.CardView>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <!-- Bantuan -->
 | 
				
			||||||
 | 
					            <androidx.cardview.widget.CardView
 | 
				
			||||||
 | 
					                android:id="@+id/card_bantuan"
 | 
				
			||||||
 | 
					                android:layout_width="0dp"
 | 
				
			||||||
 | 
					                android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_columnWeight="1"
 | 
				
			||||||
 | 
					                android:layout_rowWeight="1"
 | 
				
			||||||
 | 
					                android:layout_margin="8dp"
 | 
				
			||||||
 | 
					                android:visibility="gone"
 | 
				
			||||||
 | 
					                app:cardCornerRadius="12dp"
 | 
				
			||||||
 | 
					                app:cardElevation="2dp"
 | 
				
			||||||
 | 
					                app:cardBackgroundColor="#F3F4F3">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                <LinearLayout
 | 
				
			||||||
 | 
					                    android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                    android:layout_height="match_parent"
 | 
				
			||||||
 | 
					                    android:orientation="vertical"
 | 
				
			||||||
 | 
					                    android:gravity="center"
 | 
				
			||||||
 | 
					                    android:padding="16dp">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    <ImageView
 | 
				
			||||||
 | 
					                        android:layout_width="48dp"
 | 
				
			||||||
 | 
					                        android:layout_height="48dp"
 | 
				
			||||||
 | 
					                        android:src="@drawable/ic_qr_code"
 | 
				
			||||||
 | 
					                        android:tint="#E31937"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    <TextView
 | 
				
			||||||
 | 
					                        android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					                        android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                        android:layout_marginTop="8dp"
 | 
				
			||||||
 | 
					                        android:text="Bantuan"
 | 
				
			||||||
 | 
					                        style="@style/MenuCardTitle"/>
 | 
				
			||||||
 | 
					                </LinearLayout>
 | 
				
			||||||
 | 
					            </androidx.cardview.widget.CardView>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <!-- Info Toko -->
 | 
				
			||||||
 | 
					            <androidx.cardview.widget.CardView
 | 
				
			||||||
 | 
					                android:id="@+id/card_info_toko"
 | 
				
			||||||
 | 
					                android:layout_width="0dp"
 | 
				
			||||||
 | 
					                android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                android:layout_columnWeight="1"
 | 
				
			||||||
 | 
					                android:layout_rowWeight="1"
 | 
				
			||||||
 | 
					                android:layout_margin="8dp"
 | 
				
			||||||
 | 
					                android:visibility="gone"
 | 
				
			||||||
 | 
					                app:cardCornerRadius="12dp"
 | 
				
			||||||
 | 
					                app:cardElevation="2dp"
 | 
				
			||||||
 | 
					                app:cardBackgroundColor="#F3F4F3">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                <LinearLayout
 | 
				
			||||||
 | 
					                    android:layout_width="match_parent"
 | 
				
			||||||
 | 
					                    android:layout_height="match_parent"
 | 
				
			||||||
 | 
					                    android:orientation="vertical"
 | 
				
			||||||
 | 
					                    android:gravity="center"
 | 
				
			||||||
 | 
					                    android:padding="16dp">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    <ImageView
 | 
				
			||||||
 | 
					                        android:layout_width="48dp"
 | 
				
			||||||
 | 
					                        android:layout_height="48dp"
 | 
				
			||||||
 | 
					                        android:src="@drawable/ic_qr_code"
 | 
				
			||||||
 | 
					                        android:tint="#E31937"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    <TextView
 | 
				
			||||||
 | 
					                        android:layout_width="wrap_content"
 | 
				
			||||||
 | 
					                        android:layout_height="wrap_content"
 | 
				
			||||||
 | 
					                        android:layout_marginTop="8dp"
 | 
				
			||||||
 | 
					                        android:text="Info Toko"
 | 
				
			||||||
 | 
					                        style="@style/MenuCardTitle"/>
 | 
				
			||||||
 | 
					                </LinearLayout>
 | 
				
			||||||
 | 
					            </androidx.cardview.widget.CardView>
 | 
				
			||||||
        </GridLayout>
 | 
					        </GridLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <!-- Lainnya Button -->
 | 
					        <!-- Lainnya Button -->
 | 
				
			||||||
@ -438,13 +516,16 @@
 | 
				
			|||||||
            android:layout_height="wrap_content"
 | 
					            android:layout_height="wrap_content"
 | 
				
			||||||
            android:layout_marginLeft="16dp"
 | 
					            android:layout_marginLeft="16dp"
 | 
				
			||||||
            android:layout_marginRight="16dp"
 | 
					            android:layout_marginRight="16dp"
 | 
				
			||||||
        android:layout_marginBottom="16dp"
 | 
					            android:layout_marginTop="24dp"
 | 
				
			||||||
 | 
					            android:layout_marginBottom="24dp"
 | 
				
			||||||
            app:cardCornerRadius="12dp"
 | 
					            app:cardCornerRadius="12dp"
 | 
				
			||||||
            app:cardBackgroundColor="#E31937"
 | 
					            app:cardBackgroundColor="#E31937"
 | 
				
			||||||
            app:layout_constraintBottom_toBottomOf="parent"
 | 
					            app:layout_constraintBottom_toBottomOf="parent"
 | 
				
			||||||
        app:layout_constraintTop_toBottomOf="@id/btn_lainnya">
 | 
					            app:layout_constraintTop_toBottomOf="@id/btn_lainnya"
 | 
				
			||||||
 | 
					            app:layout_constraintVertical_bias="0">            
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            <LinearLayout
 | 
					            <LinearLayout
 | 
				
			||||||
 | 
					                android:id="@+id/scan_bayar_content"
 | 
				
			||||||
                android:layout_width="match_parent"
 | 
					                android:layout_width="match_parent"
 | 
				
			||||||
                android:layout_height="wrap_content"
 | 
					                android:layout_height="wrap_content"
 | 
				
			||||||
                android:orientation="horizontal"
 | 
					                android:orientation="horizontal"
 | 
				
			||||||
@ -482,4 +563,6 @@
 | 
				
			|||||||
            </LinearLayout>
 | 
					            </LinearLayout>
 | 
				
			||||||
        </androidx.cardview.widget.CardView>
 | 
					        </androidx.cardview.widget.CardView>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
</androidx.constraintlayout.widget.ConstraintLayout>
 | 
					    </androidx.constraintlayout.widget.ConstraintLayout>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</ScrollView>
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user