Skip to content

Commit

Permalink
release: 0.0.2(2) 버전 배포
Browse files Browse the repository at this point in the history
release: 0.0.2(2) 버전 배포
  • Loading branch information
ZZANZU authored Apr 30, 2023
2 parents 6019a97 + 8902f66 commit 5ce1139
Show file tree
Hide file tree
Showing 32 changed files with 1,033 additions and 234 deletions.
3 changes: 2 additions & 1 deletion app/.gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
/build
/build
/release
6 changes: 4 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ android {
applicationId "com.woozoo.menumonya"
minSdk 24
targetSdk 33
versionCode 1
versionName "0.0.1"
versionCode 2
versionName "0.0.2"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
Expand All @@ -26,11 +26,13 @@ android {
debug {
applicationIdSuffix ".debug"
resValue "string", "NAVER_CLIENT_ID", localProperties['NAVER_CLIENT_ID']
manifestPlaceholders = [app_name: "@string/app_name_debug"]
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
resValue "string", "NAVER_CLIENT_ID", localProperties['NAVER_CLIENT_ID']
manifestPlaceholders = [app_name: "@string/app_name"]
}
}
compileOptions {
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/logo"
android:label="@string/app_name"
android:label="${app_name}"
android:networkSecurityConfig="@xml/network_security_config"
android:supportsRtl="true"
android:theme="@style/Theme.MenuMonya"
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/java/com/woozoo/menumonya/Constants.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,7 @@ class Constants {

val GLIDE_IMAGE_SIZE_WIDTH = 100
val GLIDE_IMAGE_SIZE_HEIGHT = 100

val FEEDBACK_URL = "https://forms.gle/Emcodxf3ngNqLCHs7"
}
}
71 changes: 71 additions & 0 deletions app/src/main/java/com/woozoo/menumonya/LocationPermissionDialog.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
package com.woozoo.menumonya

import android.app.Dialog
import android.content.Context
import android.graphics.Color
import android.graphics.Typeface
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.text.Spannable
import android.text.SpannableStringBuilder
import android.text.style.ForegroundColorSpan
import android.text.style.StyleSpan
import android.text.style.UnderlineSpan
import android.view.Gravity.BOTTOM
import android.view.View
import android.view.View.OnClickListener
import com.woozoo.menumonya.databinding.DialogLocationPermissionBinding

class LocationPermissionDialog(context: Context, private val listener: OnClickListener)
: Dialog(context), OnClickListener {
private lateinit var binding: DialogLocationPermissionBinding

override fun onCreate(savedInstanceState: Bundle?) {
window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) // xml의 background 적용되도록 함.
window?.setGravity(BOTTOM) // 다이얼로그가 하단에 표시되도록 설정

super.onCreate(savedInstanceState)
binding = DialogLocationPermissionBinding.inflate(layoutInflater)
setContentView(binding.root)

binding.permissionDescriptionTv.text = getSpannableText()

binding.negativeBtn.setOnClickListener(this)
binding.positiveBtn.setOnClickListener(listener)
}

override fun onClick(v: View?) {
when (v?.id) {
R.id.negative_btn -> {
dismiss()
}
}
}

/**
* 위치 권한 다이얼로그의 '위치 서비스 사용' 텍스트에 스타일 적용
* - (주의) 텍스트 내용 수정시 setSpan()의 start, end 값도 수정해줘야 함.
*/
private fun getSpannableText(): SpannableStringBuilder {
val locationPermissionString =
context.resources.getString(R.string.location_permission_dialog_description)
val spannable = SpannableStringBuilder(locationPermissionString)

val spans = listOf(
ForegroundColorSpan(context.resources.getColor(R.color.colorPrimary)),
UnderlineSpan(),
StyleSpan(Typeface.BOLD)
)

for (span in spans) {
spannable.setSpan(
span,
14,
23,
Spannable.SPAN_EXCLUSIVE_INCLUSIVE
)
}

return spannable
}
}
82 changes: 60 additions & 22 deletions app/src/main/java/com/woozoo/menumonya/MainActivity.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package com.woozoo.menumonya

import android.Manifest
import android.content.Intent
import android.content.Intent.ACTION_VIEW
import android.content.pm.PackageManager
import android.net.Ur
import android.os.Bundle
import android.provider.Settings
import android.view.View
Expand All @@ -12,6 +15,7 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.RecyclerView
import androidx.viewpager2.widget.ViewPager2
import androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback
import com.woozoo.menumonya.Constants.Companion.FEEDBACK_URL
import com.woozoo.menumonya.MainViewModel.Event
import com.woozoo.menumonya.databinding.ActivityMainBinding
import com.woozoo.menumonya.util.PermissionUtils.Companion.ACCESS_FINE_LOCATION_REQUEST_CODE
Expand All @@ -24,6 +28,7 @@ class MainActivity : AppCompatActivity(), View.OnClickListener {
private lateinit var binding: ActivityMainBinding

private lateinit var viewPager: ViewPager2
private lateinit var locationPermissionDialog: LocationPermissionDialog

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Expand All @@ -36,10 +41,11 @@ class MainActivity : AppCompatActivity(), View.OnClickListener {
viewModel.eventFlow.collect { event -> handleEvent(event) }
}

binding.locationGnBtn.background = applicationContext.getDrawable(R.drawable.selector_location_button_selected)
binding.locationGnBtn.background = applicationContext.getDrawable(R.drawable.color_button_background)
binding.locationGnBtn.setTextColor(applicationContext.getColor(R.color.white))
binding.locationGnBtn.setOnClickListener(this)
binding.locationYsBtn.setOnClickListener(this)
binding.feedbackIv.setOnClickListener(this)
binding.currentLocationBtn.setOnClickListener(this)

// 좌우로 item이 보이도록 설정
Expand All @@ -54,12 +60,25 @@ class MainActivity : AppCompatActivity(), View.OnClickListener {
viewPager.setPageTransformer { page, position ->
val offset = position * -(2 * offsetPx + pageMarginPx)
page.translationX = offset // offset 만큼 왼쪽으로 이동시킴

updatePagerHeightForChild(page, viewPager)
}

registerOnPageChangeCallback(object: OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
// height를 wrap_content가 되도록 설정
val view = (getChildAt(0) as RecyclerView).layoutManager?.findViewByPosition(position)
view?.post {
val wMeasureSpec =
View.MeasureSpec.makeMeasureSpec(view.width, View.MeasureSpec.EXACTLY)
val hMeasureSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)
view.measure(wMeasureSpec, hMeasureSpec)
if (getChildAt(0).layoutParams.height != view.measuredHeight) {
getChildAt(0).layoutParams = (getChildAt(0).layoutParams).also { lp ->
lp.height = view.measuredHeight
}
}
}

// 마커로 카메라 이동
viewModel.moveCameraToMarker(position)
}
})
Expand Down Expand Up @@ -91,28 +110,32 @@ class MainActivity : AppCompatActivity(), View.OnClickListener {
}
is Event.ShowRestaurantView -> {
if (viewPager.adapter == null) {
viewPager.adapter = RestaurantAdapter(event.data)
viewPager.adapter = RestaurantAdapter(event.data, this)
if (event.markerIndex != -1) {
viewPager.currentItem = event.markerIndex
} else { }
} else { }
}
is Event.RequestLocationPermission -> {
requestLocationPermission(this)
locationPermissionDialog = LocationPermissionDialog(this) {
requestLocationPermission(this)
locationPermissionDialog.dismiss()
}
locationPermissionDialog.show()
}
is Event.ShowGpsPermissionAlert -> {
val builder = AlertDialog.Builder(this)
builder.setMessage("현재 위치를 찾을 수 없습니다.\n위치 서비스를 켜주세요.")
builder.setCancelable(true)
builder.setNegativeButton("취소") { dialog, which ->
dialog.dismiss()
}
builder.setPositiveButton("확인") { dialog, which ->
val gpsPermissionIntent = Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)
startActivityForResult(gpsPermissionIntent, GPS_ENABLE_REQUEST_CODE)
dialog.dismiss()
}
builder.create().show()
AlertDialog.Builder(this).apply {
setMessage("현재 위치를 찾을 수 없습니다.\n위치 서비스를 켜주세요.")
setCancelable(true)
setNegativeButton("취소") { dialog, which ->
dialog.dismiss()
}
setPositiveButton("확인") { dialog, which ->
val gpsPermissionIntent = Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)
startActivityForResult(gpsPermissionIntent, GPS_ENABLE_REQUEST_CODE)
dialog.dismiss()
}
}.create().show()
}
}

Expand Down Expand Up @@ -157,20 +180,27 @@ class MainActivity : AppCompatActivity(), View.OnClickListener {
viewPager.invalidate()
viewPager.adapter = null
viewModel.showLocationInfo("강남")
binding.locationGnBtn.background = applicationContext.getDrawable(R.drawable.selector_location_button_selected)
binding.locationYsBtn.background = applicationContext.getDrawable(R.drawable.selector_location_button)

binding.locationGnBtn.background = applicationContext.getDrawable(R.drawable.color_button_background)
binding.locationYsBtn.background = applicationContext.getDrawable(R.drawable.white_button_background)
binding.locationGnBtn.setTextColor(applicationContext.getColor(R.color.white))
binding.locationYsBtn.setTextColor(applicationContext.getColor(R.color.gray600))
}
R.id.location_ys_btn -> {
viewPager.invalidate()
viewPager.adapter = null
viewModel.showLocationInfo("역삼")
binding.locationYsBtn.background = applicationContext.getDrawable(R.drawable.selector_location_button_selected)
binding.locationGnBtn.background = applicationContext.getDrawable(R.drawable.selector_location_button)

binding.locationYsBtn.background = applicationContext.getDrawable(R.drawable.color_button_background)
binding.locationGnBtn.background = applicationContext.getDrawable(R.drawable.white_button_background)
binding.locationYsBtn.setTextColor(applicationContext.getColor(R.color.white))
binding.locationGnBtn.setTextColor(applicationContext.getColor(R.color.gray600))
}
R.id.feedback_iv -> {
val intent = Intent(ACTION_VIEW, Uri.parse(FEEDBACK_URL))
startActivity(intent)
}
// '내 주변' 버튼 클릭
R.id.current_location_btn -> {
viewModel.getCurrentLocation(this)
}
Expand All @@ -180,10 +210,18 @@ class MainActivity : AppCompatActivity(), View.OnClickListener {
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if (requestCode == ACCESS_FINE_LOCATION_REQUEST_CODE) {
// (1) 권한 허용 여부 체크
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
viewModel.getCurrentLocation(this)
} else {
Toast.makeText(this, "위치 권한을 허용해주세요", Toast.LENGTH_SHORT).show()
// (2) '다시는 보지 않음' 클릭 여부 체크
if (shouldShowRequestPermissionRationale(Manifest.permission.ACCESS_FINE_LOCATION)) {
Toast.makeText(this, R.string.location_permission_denied_toast,
Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(this, R.string.location_permission_denied_forever_toast,
Toast.LENGTH_SHORT).show()
}
}
}
}
Expand Down
Loading

0 comments on commit 5ce1139

Please sign in to comment.