MaterialDialog를 구현한 것인데요. icon 은 말 그대로 알림 창에 icon 이 나옵니다 title 은 제목을 쓸 내용을 정리하면 되고요 message 에는 알림 표시용 글을 표시하면 되고, positiveButton 에는 확인 버튼을 구현하기 위한 메시지 내용과 버튼 클릭 시 동작할 action을 구현합니다. negativeButton 에는 취소 버튼을 구현하기 위한 메시지 내용과 action을 구현합니다.
입력이 있는 Dialog 구현해 보기
gradle 설정
이번에는 입력이 있는 dialog 을 구현해 보겠습니다. 먼저 gradle 설정에 추가 하여야 합니다.
// 입력 받는 다이얼로그 implementation 'com.afollestad.material-dialogs:input:3.3.0' implementation 'com.google.android.material:material:1.6.1'
저 2줄중에 위에 꺼는 원작자 링크에서 도 찾을 수 있었지만, 아래 줄은 없었습니다. 저 한 줄 때문에 에러가 나와서 찾는 데 애를 쫌 먹었습니다. 아무튼... 그리고 이번에는 style도 잘 정리가 되어야 하는 데, 결론적으로는 아래와 같이 theme.xml 파일을 정리했습니다. 원인은 Theme.AppCompat 이 아닐 경우 위에서 implementation 된 material layout이 동작하지 않는 것으로 보입니다.
#스하리1000명프로젝트, A volte è difficile parlare con i lavoratori stranieri, vero? Ho realizzato una semplice app che aiuta! Scrivi nella tua lingua e gli altri lo vedono nella loro. Si traduce automaticamente in base alle impostazioni. Super pratico per chat facili. Dai un'occhiata quando ne hai la possibilità! https://play.google.com/store/apps/details?id=com.billcoreatech.multichat416
이전 글에서 작성했던 navigation 은 그저 화면의 이동에 중점을 두었습니다. 그러다 보니, 화면 하단에 메뉴를 달고 그 메뉴는 항상 표시가 되어야 했지만, 그렇지 못했습니다 그래서 이번에는 꼭 하단 메뉴는 그대로 두고 content 내용만 변경되는 모양으로 만들어 보기로 했습니다.
다시 원작자가 작성한 코드를 살펴보면서 따라 하기를 해 보았습니다. 먼저 참조할 소스 코드의 github 링크는 아래와 같습니다.
enum class BottomBarItem( val direction: DirectionDestination, val icon: ImageVector, @StringRes val label: Int ) { Home(HomeScreenDestination, Icons.Outlined.Home, R.string.Home), ProductItem(ProductItemScreenDestination, Icons.Outlined.ShoppingCart, R.string.productItems), Setting(ManagerScreenDestination, Icons.Outlined.Settings, R.string.Setting) }
코드를 가져오면서 잠깐의 혼돈은 onClick에 구현된 코드 작성에서 있었습니다. import 처리가 잘 되지 않아서 코드를 직접 입력하면서 해소를 하였습니다.
BespeakScaffold
이 부분은 MainActivity에서 호출한 Scaffold을 변형한 코드입니다. 원작자의 코드에서는 topbar 도 있었지만, 이번에는 사용을 하지 않을 것이기 때문에 제거하고 필요한 부분만 가져왔습니다.
def docx_to_txt(path, filename): text = docx2txt.process(path + filename).split('\n') # docx 파일의 내용이 text에 담기는데 '\n' 줄바꿈 문자 기준으로 나뉘어 리스트로 만들어 진다. newfile = os.path.splitext(filename)[0] + '.txt' f = open(os.path.join(path, newfile), 'w', encoding='UTF-8') # txt 파일 오픈(없으면 생성됨) for item in text: # text에 담긴 [[Example01], [Hello], [Hi] ...]의 요소 하나가 txt파일에 한줄로 써지게 됨. f.write(item + '\n') f.close() return newfile # {file}.txt가 리턴됨
이 또한 연동을 위한 API 지원이나, 여러 가지 자료가 있고, 구글링을 했을 때 추천하는 글을 많이 보았습니다. 실제 구현을 해 보기에는 어떤지 아직 감이 오지 않습니다. 다른 여러 PG사와 연동을 지원하는 것이 매력일 듯 해 보이나, 실제 비용이 청구되는 시점에 어떤 생각이 들지는 체험을 해 보지 못해 알 수 없습니다.
다른 결제 수단들의 연동이 Bootpay 을 경유(?) 모양이 로만 구글링의 결과가 보이기 때문에 일단...
#스하리1000명프로젝트, Perdu en Corée ? Même si vous ne parlez pas coréen, cette application vous aide à vous déplacer facilement. Parlez simplement votre langue : il traduit, recherche et affiche les résultats dans votre langue. Idéal pour les voyageurs ! Prend en charge plus de 10 langues, dont l'anglais, le japonais, le chinois, le vietnamien et plus encore. Essayez-le maintenant ! https://play.google.com/store/apps/details?id=com.billcoreatech.opdgang1127
요즘은 매장에 가면 다들 테이블에 테블릿 하나쯤 거치하고 주문을 받고 실시간으로 결제도 진행하고 그렇게 매장을 운영하는 경우를 종종 보게 됩니다. 그것이 좋은 지 어떤지는 모르겠지만... 그런 매장을 하나 가져보고 싶은 욕망(?)이 생기는 건... 이제 떠나야 할 곳이 어디인지 보이기 때문 이기도 합니다.
앱 로고 이미지
이것은 맞는 가 하는 문제는 나중에 생각해 보려 합니다. 지금은 무언가를 해야할 것 같은 시기이기도 하고 해서...
준비사항
아직은 아무런 준비도 없고 그저 앱을 하나 기획하고 기본 화면만 하나 만들어서 무작정 게시를 시작합니다.
다들 아시는 것처럼 playstore console 에서 새로 앱 만들기를 하고 게시할 준비를 시작합니다.
기본 스토어 등록 정보
이걸 하기 전에 준비해야 할 것들은
로그 이미지 (앱 아이콘은 투명한 PNG 또는 JPEG, 최대 1MB, 512px X 512px이어야 하며디자인 사양및메타데이터 정책을 준수해야 합니다.),
기본 아미지 (그래픽 이미지는 PNG 또는 JPEG, 최대 1MB, 1024px X 500px이어야 합니다.),
동영상 링크 (보통은 youtube 링크를 입력합니다.)
그리고 여러 장의 앱 이미지 (휴대전화 스크린숏을 2~8장 업로드하세요. 스크린숏은 PNG 또는 JPEG, 장당 최대 8MB, 가로세로 비율 16:9 또는 9:16, 가로세로 길이는 320px X 3840px 사이여야 합니다.) 등을 준비하여야 합니다.
다음은 앱 콘텐츠에서 나오는 각 항목을 설정해 두어야 합니다. 그다음은 앱을 빌드해서 내부 테스트부터 하건, 바로 프로덕션으로 하건 앱을 업로드하고 게시 허가가 나오길 기다려 봅니다.