프로젝트명 : 내손안의 새싹(App)

프로젝트 기간이 한 달 정도밖에 주어지지 않아 시간이 부족하였기 때문에 손봐야 할 부분들이 많다고 생각하여 수정하는 작업을 진행하였다.

앱 실행화면

Activity_Splash.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".SplashActivity"
    android:background="#212025">
    <ImageView
        android:id="@+id/project_icon"
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:layout_centerInParent="true"
        android:src="@drawable/plant" />
    <TextView
        android:layout_marginTop="16dp"
        android:textColor="#43B05C"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/project_icon"
        android:layout_centerInParent="true"
        android:text="Loding"
        android:textSize="24sp"/>
</RelativeLayout>

SplashActivity.java

package com.example.test000111;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

public class SplashActivity extends AppCompatActivity {

    private FirebaseAuth firebaseAuth;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);

        firebaseAuth = FirebaseAuth.getInstance();

        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                checkUser();
            }
        },2000);

    }

    private void checkUser() {

        FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();

        if(firebaseUser == null) {
            startActivity(new Intent(SplashActivity.this, MainActivity.class));
            finish();

        } else {
            DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Users");
            ref.child(firebaseUser.getUid())
                    .addListenerForSingleValueEvent(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot snapshot) {
                            String userType = ""+snapshot.child("userType").getValue();
                            if (userType.equals("user")){
                                startActivity(new Intent(SplashActivity.this,Test1.class));
                                finish();
                            } else if (userType.equals("admin")) {
                                startActivity(new Intent(SplashActivity.this,Test1.class));
                                finish();
                            }
                        }

                        @Override
                        public void onCancelled(@NonNull DatabaseError error) {

                        }
                    });

        }
    }
}

SplashActivity.java 수정

SplashActivity에서는 다른 기능은 필요 없고 SplashActivity에서 MainActivity에서 화면전환만 하면 되기 때문에 FirebaseAuth와 CheckUser로 사용자가 User인지 Admin인지 확인할 필요가 없다. 그래서 SplashActivity에서 딜레이를 주고 바로 MainActivity로 넘어가도록 수정하였다.

package com.example.test000111;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import androidx.appcompat.app.AppCompatActivity;


public class SplashActivity extends AppCompatActivity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
        
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                startActivity(new Intent(SplashActivity.this, MainActivity.class));
            }
        }, 2000);
    }
}

메인 화면

MainActivity.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#212025"
    android:padding="20dp"
    tools:context=".MainActivity">

    <ImageView
        android:id="@+id/project_icon"
        android:layout_width="130dp"
        android:layout_height="130dp"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="15dp"
        android:src="@drawable/plant" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/project_icon"
        android:layout_centerInParent="true"
        android:layout_marginTop="16dp"
        android:text="Wlcome to app"
        android:textColor="@color/white"
        android:textSize="24sp"/>

    <Button
        android:id="@+id/login_Btn"
        android:layout_width="match_parent"
        android:layout_height="35dp"
        android:layout_above="@id/skip_Btn"
        android:background="@drawable/button_bg"
        android:text="  Login"
        android:gravity="left"
        android:textSize="18dp"
        android:textColor="@color/white" />

    <Button
        android:id="@+id/skip_Btn"
        android:layout_width="match_parent"
        android:layout_height="35dp"
        android:layout_alignParentBottom="true"
        android:layout_marginTop="10dp"
        android:gravity="left"
        android:layout_marginBottom="15dp"
        android:textSize="15dp"
        android:background="@drawable/button_bg_2"
        android:text="  Continue without login"
        android:textColor="@color/white" />

</RelativeLayout>

MainActivity.java

package com.example.test000111;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;

import com.example.test000111.R;
import com.example.test000111.databinding.ActivityMainBinding;

public class MainActivity extends AppCompatActivity {

    private ActivityMainBinding binding;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        binding = ActivityMainBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());

        binding.loginBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(MainActivity.this,LoginActivity.class));
            }
        });

        binding.skipBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(MainActivity.this,Test1.class));
            }
        });

    }
}

MainActivity.xml 수정

화분을 산 사람만 앱을 사용할 수 있도록 만들어 앱은 무료이나 화분에서 수익을 얻을 수 있도록 계획하였다. 따라서 로그인 없이도 들어갈 수 있는 버튼보다는 회원가입 버튼을 만들어 회원가입으로 넘어갈 수 있도록 수정 하였다.

MainActivity.java 수정

profile
Alessandro Nesta

0개의 댓글