지도를 띄우고 마커를 붙이는 정도까지 만들었다. 결국 프로젝트에서 카카오맵을 안쓰게 되어 소스코드가 아까워서 저장한다. package com.connple.weat.map import android.Manifest import android.content.pm.PackageManager import android.os.Bundle import android.view.View import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat import com.connple.weat.R im..
안드로이드
1. retrofit2와 okhttp3, gson 빌더를 싱글톤으로 생성한다 빌더를 만드는 것은 한 번 만들고 다시 코드를 적을일 없으니 저장해놓고 쓰도록 하자. import com.connple.weat.api.model.Notification import com.connple.weat.api.model.User import okhttp3.MultipartBody import retrofit2.Call import retrofit2.http.* object MyApp { private lateinit var retrofit: Retrofit private val signedIn get() = authToken != null fun update( baseUrl: String? = null, authTok..
아래와 같은 코드에서, lateinit var test: String override fun onCreate(saveInstanceState: Bundle?){ super.onCreate(saveInstanceState) setTest("안녕하세요!") System.out.println(test) } fun setTest(text: String) { Handler().postdelayed({ test = text }, 1000) } lateinit은 게으른, 느린 초기화를 의미한다. 느린 초기화란 메모리를 아끼기 위해서 변수가 필요할 때 초기화 하는 것을 의미한다. 하지만 이 변수를 초기화 하지 않고 사용한다면 초기화 에러가 뜬다. 위의 코드를 보면 1000 밀리세컨드가 지나간 다음에 test가 초기화 ..
android { compileSdkVersion 29 buildToolsVersion "29.0.3" defaultConfig { applicationId "com.connple.weat" minSdkVersion 26 targetSdkVersion 29 versionCode 3 versionName "3" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { // 여기 // false -> true minifyEnabled true // 여기 proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-ru..
인스타그램 같은 어플을 보면 아래로 스와이프 한 후 컨텐츠를 새로고침 해야할 때가 있다. 그럴 때 아주 유용한 레이아웃이다. 1. 아래와 같이 새로고침 하고자 하는 뷰를 SwipeRefreshLayout으로 감싸준다. 2. 뷰의 SwipeRefreshLayout을 변수에 저장한 후 setOnRefreshListener를 호출해서 함수를 실행한다. setColorSchemeResources는 돌아가는 동그라미의 배경 색과 동그라미 색을 정하는 코드이다. val listSwipeRefreshLayout = fragmentView.fragment_home_list_swipe_layout listSwipeRefreshLayout.setOnRefreshListener { getReviews() updateLayo..
간단하게 알럿 다이얼로그를 이용해서 로딩 중을 만드는 방법이다. 1. ProgressBar를 포함한 간단한 레이아웃을 만든다. 2. 다이얼 로그를 여러 곳에서 이용하기 위해 클래스와 함수로 만들어준다. class Dialog(private val context: Context) { private val view: View? = LayoutInflater.from(context).inflate(R.layout.alert_dialog_progressbar, null) private val builder = AlertDialog.Builder(context) private val dialog: AlertDialog = builder .setCancelable(false) .setView(view) .creat..