사이드 프로젝트 5일차

고성욱·2023년 3월 26일
0

사이드프로젝트

목록 보기
5/7

화면처럼 꾸미기

  • 아래는 코드입니다.
  • 디자이너가 아니기 때문에 여러 홈페이지를 통해서 디자인을 참고 했습니다.
<?xml version="1.0" encoding="utf-8"?>

<androidx.drawerlayout.widget.DrawerLayout 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:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:context=".MainActivity">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <ImageView
                android:id="@+id/img_top"
                android:layout_width="547dp"
                android:layout_height="370dp"
                android:layout_marginStart="0dp"
                android:layout_marginTop="-89dp"
                android:layout_marginEnd="0dp"
                app:srcCompat="@drawable/top_background" />

            <TextView
                android:id="@+id/userinfo"
                android:layout_width="3000dp"
                android:layout_height="80dp"
                android:layout_gravity="center_horizontal"
                android:layout_marginTop="45dp"
                android:gravity="center"
                android:text="SEENABLOW"
                android:textColor="#FFFFFF"
                android:textSize="45sp" />
        </FrameLayout>

        <GridLayout
            android:layout_width="370dp"
            android:layout_height="407dp"
            android:layout_alignParentTop="true"
            android:layout_marginStart="20dp"
            android:layout_marginTop="231dp"
            android:layout_marginEnd="20dp"
            android:layout_marginBottom="20dp"
            android:clickable="true"
            android:columnCount="2"
            android:focusable="true"
            android:rowCount="2">

            <androidx.cardview.widget.CardView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_row="0"
                android:layout_rowWeight="1"
                android:layout_column="0"
                android:layout_columnWeight="1"
                android:layout_gravity="fill"
                android:layout_margin="8dp"
                android:clickable="true"
                android:focusable="true"
                android:foreground="?android:attr/selectableItemBackground"
                app:cardCornerRadius="8dp"
                app:cardElevation="8dp"
                tools:ignore="DuplicateClickableBoundsCheck">

                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical|center_horizontal"
                    android:gravity="center"
                    android:orientation="vertical">

                    <ImageView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"/>

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text=""
                        android:textAlignment="center"
                        android:textSize="20sp"
                        android:textStyle="bold" />

                </LinearLayout>
            </androidx.cardview.widget.CardView>

            <androidx.cardview.widget.CardView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_row="0"
                android:layout_rowWeight="1"
                android:layout_column="1"
                android:layout_columnWeight="1"
                android:layout_gravity="fill"
                android:layout_margin="8dp"
                android:clickable="true"
                android:focusable="true"
                app:cardCornerRadius="8dp"
                app:cardElevation="8dp"
                tools:ignore="DuplicateClickableBoundsCheck">

                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical|center_horizontal"
                    android:gravity="center"
                    android:orientation="vertical">

                    <ImageView
                        android:layout_width="48dp"
                        android:layout_height="48dp"/>

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="칼럼"
                        android:textAlignment="center"
                        android:textSize="20sp"
                        android:textStyle="bold" />

                </LinearLayout>
            </androidx.cardview.widget.CardView>

            <androidx.cardview.widget.CardView
                android:id="@+id/card_nov"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_row="1"
                android:layout_rowWeight="1"
                android:layout_column="0"
                android:layout_columnWeight="1"
                android:layout_gravity="fill"
                android:layout_margin="8dp"
                android:clickable="true"
                android:focusable="true"
                android:foreground="?android:attr/selectableItemBackground"
                app:cardCornerRadius="8dp"
                app:cardElevation="8dp">

                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical|center_horizontal"
                    android:gravity="center"
                    android:orientation="vertical">

                    <ImageView
                        android:layout_width="69dp"
                        android:layout_height="52dp"/>

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="소설"
                        android:textAlignment="center"
                        android:textSize="20sp"
                        android:textStyle="bold" />

                </LinearLayout>
            </androidx.cardview.widget.CardView>

            <androidx.cardview.widget.CardView
                android:id="@+id/card_poem"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_row="0"
                android:layout_rowWeight="1"
                android:layout_column="0"
                android:layout_columnWeight="1"
                android:layout_gravity="fill"
                android:layout_margin="8dp"
                android:clickable="true"
                android:focusable="true"
                android:foreground="?android:attr/selectableItemBackground"
                app:cardCornerRadius="8dp"
                app:cardElevation="8dp">

                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical|center_horizontal"
                    android:gravity="center"
                    android:orientation="vertical">

                    <ImageView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"/>

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text=""
                        android:textAlignment="center"
                        android:textSize="20sp"
                        android:textStyle="bold" />

                </LinearLayout>
            </androidx.cardview.widget.CardView>

            <androidx.cardview.widget.CardView
                android:id="@+id/card_column"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_row="0"
                android:layout_rowWeight="1"
                android:layout_column="1"
                android:layout_columnWeight="1"
                android:layout_gravity="fill"
                android:layout_margin="8dp"
                android:clickable="true"
                android:focusable="true"
                android:foreground="?android:attr/selectableItemBackground"
                app:cardCornerRadius="8dp"
                app:cardElevation="8dp">

                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical|center_horizontal"
                    android:gravity="center"
                    android:orientation="vertical">

                    <ImageView
                        android:layout_width="48dp"
                        android:layout_height="48dp" />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="칼럼"
                        android:textAlignment="center"
                        android:textSize="20sp"
                        android:textStyle="bold" />

                </LinearLayout>
            </androidx.cardview.widget.CardView>

            <androidx.cardview.widget.CardView
                android:id="@+id/card_news"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_row="1"
                android:layout_rowWeight="1"
                android:layout_column="1"
                android:layout_columnWeight="1"
                android:layout_gravity="fill"
                android:layout_margin="8dp"
                android:clickable="true"
                android:focusable="true"
                android:foreground="?android:attr/selectableItemBackground"
                app:cardCornerRadius="8dp"
                app:cardElevation="8dp">

                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical|center_horizontal"
                    android:gravity="center"
                    android:orientation="vertical">

                    <ImageView
                        android:layout_width="69dp"
                        android:layout_height="52dp"
                      />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="뉴스"
                        android:textAlignment="center"
                        android:textSize="20sp"
                        android:textStyle="bold" />

                </LinearLayout>
            </androidx.cardview.widget.CardView>

        </GridLayout>

    </RelativeLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <include layout="@layout/toolbar_layout" />
    </LinearLayout>

    <com.google.android.material.navigation.NavigationView
        android:id="@+id/naviView"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="left"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/navi_header"
        app:menu="@menu/navi_menu"/>

</androidx.drawerlayout.widget.DrawerLayout>

결과물!

화면 기능 구현을 위해 연결하기

  • 코드
package com.example.seenablow

import android.content.Intent
import android.os.Build
import android.os.Bundle
import android.util.Log
import android.view.MenuItem
import android.view.View
import android.widget.*
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.Toolbar
import androidx.cardview.widget.CardView
import androidx.core.view.GravityCompat
import androidx.drawerlayout.widget.DrawerLayout
import com.google.android.material.navigation.NavigationView

class MainActivity : AppCompatActivity() {
    var card_nov: CardView? = null
    var card_poem: CardView? = null
    var card_news: CardView? = null
    var card_column: CardView? = null
    private var toolbar: Toolbar? = null
    private var drawerLayout: DrawerLayout? = null
    private var navigationView: NavigationView? = null
    var navi_textview: TextView? = null
    var navi_textview2: TextView? = null
    var username: String? = null
    var age: String? = null
    var gender: String? = null
    var classes: String? = null
    //var intent: Intent? = null
    //
    var isclick = false
    var navi_icon: ImageView? = null
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        //해당 액티비티를 잠금화면에 띄워줌
        setContentView(R.layout.activity_main)
        card_nov = findViewById<CardView>(R.id.card_nov)
        card_poem = findViewById<CardView>(R.id.card_poem)
        card_news = findViewById<CardView>(R.id.card_news)
        card_column = findViewById<CardView>(R.id.card_column)
        drawerLayout = findViewById<DrawerLayout>(R.id.drawer_layout)
        intent = getIntent()
        navigationView = findViewById<View>(R.id.naviView) as NavigationView
        navigationView!!.setNavigationItemSelectedListener { item: MenuItem ->
            onOptionsItemSelected(
                item
            )
        }
        val nav_header_view = navigationView!!.getHeaderView(0)
        navi_textview = nav_header_view.findViewById<View>(R.id.user_name) as TextView
        val nav_header_view2 = navigationView!!.getHeaderView(0)
        navi_textview2 = nav_header_view2.findViewById<View>(R.id.userinfo) as TextView
        val nav_header_view3 = navigationView!!.getHeaderView(0)
        navi_icon = nav_header_view3.findViewById<View>(R.id.navi_icon) as ImageView
        toolbar = findViewById<Toolbar>(R.id.toolbar)
        setSupportActionBar(toolbar)
        //액션바 객체
        val actionBar = supportActionBar
        actionBar!!.setDisplayHomeAsUpEnabled(true)
        supportActionBar!!.setDisplayShowTitleEnabled(false)

        //뒤로가기 버튼 이미지 적용
        actionBar.setHomeAsUpIndicator(R.drawable.ic_menu)
        val sharedPreferences = getSharedPreferences("username", MODE_PRIVATE)
        username = sharedPreferences.getString("username", "")
        age = sharedPreferences.getString("age", "")
        gender = sharedPreferences.getString("gender", "")
        classes = sharedPreferences.getString("class", "")

    }

    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        isclick = false
        val id = item.itemId
        if (id == R.id.menu_item1) {
        } else if (id == R.id.menu_item2) {
            Log.d("실행", "ㅇㅇ")
            if (Build.VERSION.SDK_INT >= 28) {
                startForegroundService(intent)
                Log.v("asdf", "startService!")
            }
        }
        when (item.itemId) {
            android.R.id.home -> {
                if (classes == "8") {
                    navi_icon!!.setImageResource(R.drawable.uni_1color)
                } else if (classes == "7") {
                    navi_icon!!.setImageResource(R.drawable.uni_2color)
                } else if (classes == "6") {
                    navi_icon!!.setImageResource(R.drawable.uni_3color)
                } else if (classes == "5") {
                    navi_icon!!.setImageResource(R.drawable.uni_4color)
                } else if (classes == "4") {
                    navi_icon!!.setImageResource(R.drawable.uni_5color)
                } else if (classes == "3") {
                    navi_icon!!.setImageResource(R.drawable.uni_6color)
                } else if (classes == "2") {
                    navi_icon!!.setImageResource(R.drawable.uni_7color)
                } else if (classes == "1") {
                    navi_icon!!.setImageResource(R.drawable.uni_8color)
                }
                navi_textview!!.text = username
                navi_textview2!!.text = "$age 세 $gender"
                drawerLayout!!.openDrawer(GravityCompat.START)
                return true
            }
        }
        return super.onOptionsItemSelected(item)
    }

    override fun onBackPressed() {
        val alert_ex = AlertDialog.Builder(this)
        alert_ex.setMessage("정말로 종료하시겠습니까?")
        alert_ex.setNegativeButton("취소") { dialog, which -> }
        alert_ex.setPositiveButton("종료") { dialog, which -> finishAffinity() }
        alert_ex.setTitle("Good Bye!")
        val alert = alert_ex.create()
        alert.show()
    }
}
profile
안드로이드, 파이썬 개발자

0개의 댓글