미니 어플리케이션 만들기(1) [splashActivity, IntroActivity]- emptyActicity 만들기, 자주 사용하는 컬러 지정하기, 이미지 넣기
[Empty Activity 만들기]
com.example.miniapplication 오른쪽 마우스 클릭 -> New -> Activity -> Empty Activity 선택
[자주 사용하는 컬러 지정]
[이미지 안드로이드 스튜디어 drawble 폴더 안에 넣기]
1. 넣고 싶은 사진을 ctrl+c 후 drawable 폴더에 ctrl+v 한다
2. -v24 가 아닌 이 그냥 drawable 폴더를 선택한다
[package 만들기]
[package.auth 만들기]
[empty activity 만들기]
[상단바 색깔 변경및 어플리테이션 이름 안보이게 하기]
빨간박스로 표시한 부분을 작성해준다
AndroidMainfest.xml에서 경로 잡아주기
상단바의 색깔이 변경되었고 어플리케이션 이름이 적혀 있는 부분도 삭제되었다
Scale Type에는 8가지 종류가 있습니다.
1. matrix(원본 그대로)
2. center (가운데 정렬)
3. centerCrop(비율을 유지하며 가운데를 중심으로 자른다.)
4. centerInside (비율을 유지하며 줄어듬)
5. fitStart( 왼쪽 위 정렬/ 비율유지)
6. fitCenter(centerInside와 동일)
7. fitEnd(왼쪽 아래 정렬/ 비율유지)
8 fitXY(늘이기 ImageView를 비율에 상관없이 다 채웁니다.)
이미지 위치 잡아주기
[button 내가 원하는 대로 커스텀 하기]
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/white"/>
<corners android:radius="50dp"/>
</shape>
빨간색 부분을 선택해서
만든 버튼 선택
[splashActivity]
이미지, 로그 및 소프트웨어의 현재 버전을 포함하는 창으로 구성된 그래픽 제어 요소. 게임이나 프로그램이 시작되는 동안 일정시간동안 스플래시 화면이 나타나며, 스플래시 화면은 주로 웹 사이트의 소개 페이지를 의미한다.
<SplashActivity>
package com.example.miniapplication
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.Handler
import com.example.miniapplication.auth.IntroActivity
class SplashActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_splash)
//OnCreate가 실행되고 나서 3초 뒤에 IntroActivity로 넘어가는 코드 작성 Thread, Intent
// 프로그램에는 MainThread 무조건 한개
// 내가 만든 작업처리 SubThread
// SubThread가 동작하고 있는 MainThread에 끼어들려면
// Handler가 필요하다 ( 메세지 객체, Thread 를 실행시킬 수 있음)
// Handler를 가져와주자
// postDelayed({실행할 코드}, 지연시킬 시간)
Handler().postDelayed({
//Intent 생성
val intent = Intent(this@SplashActivity, IntroActivity::class.java)
//Intent 실행
startActivity(intent)
},3000)
}
}
[splashActivity, IntroActivity 코드 총 정리]
[AndroidMainifest]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.MiniApplication"
tools:targetApi="31">
<activity
android:name=".LoginActivity"
android:exported="false">
<meta-data
android:name="android.app.lib_name"
android:value="" />
</activity>
<activity
android:name=".auth.IntroActivity"
android:exported="false">
<meta-data
android:name="android.app.lib_name"
android:value="" />
</activity>
<activity
android:name=".SplashActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="android.app.lib_name"
android:value="" />
</activity>
<activity
android:name=".MainActivity"
android:exported="true">
<meta-data
android:name="android.app.lib_name"
android:value="" />
</activity>
</application>
</manifest>
[auth>IntroActivity]
package com.example.miniapplication.auth
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.example.miniapplication.R
class IntroActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_intro)
}
}
[com.example.miniapplication>MainActivity]
package com.example.miniapplication
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
[com.example.miniapplication>SplashActivity]
package com.example.miniapplication
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.Handler
import com.example.miniapplication.auth.IntroActivity
class SplashActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_splash)
//OnCreate가 실행되고 나서 3초 뒤에 IntroActivity로 넘어가는 코드 작성 Thread, Intent
// 프로그램에는 MainThread 무조건 한개
// 내가 만든 작업처리 SubThread
// SubThread가 동작하고 있는 MainThread에 끼어들려면
// Handler가 필요하다 ( 메세지 객체, Thread 를 실행시킬 수 있음)
// Handler를 가져와주자
// postDelayed({실행할 코드}, 지연시킬 시간)
Handler().postDelayed({
//Intent 생성
val intent = Intent(this@SplashActivity, IntroActivity::class.java)
//Intent 실행
startActivity(intent)
},3000)
}
}
[activity_into]
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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=".auth.IntroActivity">
<ImageView
android:id="@+id/imageView2"
android:layout_width="0dp"
android:layout_height="600dp"
android:scaleType="fitXY"
app:layout_constraintBottom_toBottomOf="@+id/imageView3"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/main_background" />
<ImageView
android:id="@+id/imageView3"
android:layout_width="0dp"
android:layout_height="360dp"
android:scaleType="fitXY"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:srcCompat="@drawable/upperbg" />
<Button
android:id="@+id/button"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_marginStart="16dp"
android:layout_marginTop="150dp"
android:layout_marginEnd="16dp"
android:background="@drawable/button_radius_white"
android:text="로그인"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/imageView3" />
<Button
android:id="@+id/button2"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_marginTop="8dp"
android:background="@drawable/button_radius_white"
android:text="회원가입"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="@+id/button"
app:layout_constraintStart_toStartOf="@+id/button"
app:layout_constraintTop_toBottomOf="@+id/button" />
<Button
android:id="@+id/button3"
android:layout_width="0dp"
android:layout_height="60dp"
android:layout_marginTop="8dp"
android:background="@drawable/button_radius_white"
android:text="비회원 가입"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="@+id/button2"
app:layout_constraintStart_toStartOf="@+id/button2"
app:layout_constraintTop_toBottomOf="@+id/button2" />
</androidx.constraintlayout.widget.ConstraintLayout>
[activity_splash]
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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="@color/mainColor"
tools:context=".SplashActivity">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/logo" />
</androidx.constraintlayout.widget.ConstraintLayout>
[themes.xml]
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.MiniApplication" parent="Theme.AppCompat.Light">
<item name="windowNoTitle">true</item>
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/mainColor</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">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
</resources>
[button_radius_white.xml]
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/white"/>
<corners android:radius="50dp"/>
</shape>