์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- ๋ค์ ์ ๋ฆฌํด์ผํจ
- ์ฝํ๋ฆฐ
- ์๊ณ ๋ฆฌ์ฆ ์ธ์ฆ_1์ฃผ์ฐจ
- recyclerview
- iPortfolio
- Filter
- ์ฝ๋ฉํ ์คํธ
- filternot
- ์๊ณ ๋ฆฌ์ฆ ์ธ์ฆ_2์ฃผ์ฐจ
- foldindexed
- ๋ค์๋ด
- array๋ list
- ์๊ณ ๋ฆฌ์ฆ ์ธ์ฆ
- ๋ค์์ ๋ฆฌํ๊ธฐ
- ์ทจ์ค๊ธฐ๋ก
- Today
- Total
๋ชฉ๋กAndroid [Kotlin] ๐ป๐ค (24)
Moments of growth
Reference) [android]Dp, Pixel ๋ณํ๋ฐฉ๋ฒ // Pixel ์์ DP๋ก ๋ณํ public int pxToDp(Context context, int px){ DisplayMetrics metrics = context.getResources().getDisplayMetrics(); int dp = Math.round(px / (metrics.xdpi / metrics.DENSITY_DEFA.. baekcedar.tistory.com dp๋ฅผ px๋ก ๋ฐ๊พธ๋ ํจ์ fun dpToPx(valueInDp: Float): Float { var metrics: DisplayMetrics = resources.displayMetrics return TypedValue.applyDimension(Type..
android:overScrollMode="never" Reference) [Android Studio] ScrollView ์ฌ์ฉ์ ๋ฌผ๊ฒฐ๋ฌด๋ฌ ์์ ๊ธฐ ScrollView๋ฅผ ์ฌ์ฉํด์ ์คํฌ๋กค์ ๊ตฌํํ๊ณ ์คํฌ๋กค์ ์์์ง์ ์ด๋ ๋์ง์ ์ hitํ์ ๋, ์ ๋ฐ ๋ฌผ๊ฒฐ๋ฌด๋ฌ๊ฐ ๋์ค๋๋ฐ UI๊ตฌ์ฑ์ ๋ฐ๋ผ์ ์ ๊ฒ ์๋นํ ํํด ๋ณด์ผ ๋๊ฐ ์๋ค. ์ด๊ฑธ ๋ญ๋ผ๊ณ ๋ถ๋ฌ์ผ ํ๋์ง๋ satisfactoryplace.tistory.com
//๋ค์ด์ผ๋ก๊ทธ ๋ฐ๊นฅ ์์ญ ๋๋ ์ ๋ dismiss ๋ง๊ธฐ dialogView.isCancelable = false ์ฐธ๊ณ ) [Android] dialog ์์ญ ๋ฐ(์ธ๋ถ) ํด๋ฆญ ์, dissmiss ๋๋ ํ์ ๋ง๊ธฐ(์ฐฝ ์ฌ๋ผ์ง) Dialog ๋๋ AlertDialog ์์ญ ๋ฐ(ex. ์ ๊ทธ๋ฆผ์์ ๋นจ๊ฐ ๋ถ๋ถ)์ ํด๋ฆญ(ํฐ์น)์ ์ฐฝ์ด ์ฌ๋ผ์ง๋ ํ์์ด ์... blog.naver.com
Fragment์์ ํค๋ณด๋ ๋ด๋ฆฌ๋ ์ฝ๋ val imm = context!!.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager imm.hideSoftInputFromWindow(binding.etToWho.windowToken, 0) Activity์์ ํค๋ณด๋ ๋ด๋ฆฌ๋ ์ฝ๋ val imm = this.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager imm.hideSoftInputFromWindow(binding.etToWho.windowToken, 0) InputMethodManager์ธ imm์ ๋จผ์ ๋ง๋ค์ด์ค์ผํ๋ค. ์ฐธ๊ณ ) โจ๏ธ EditText ํค๋ณด๋ ์ฌ๋ฆฌ๊ธฐ/..
์ปค์คํ ํ ์คํธ๋ฅผ ์ธ ๋ ๋๋ฅผ ๋๋ง๋ค ํ ์คํธ๊ฐ ํ๋์ฉ ์คํ๋๋ฉด ์ฆ๊ฐ์ ์ผ๋ก ๋ณํ๋ฉด์ ๋ณด์ฌ์ค์ผํ๋ ์ํฉ์์๋ ์ ์ ํ์ง ๋ชปํ๋ค. ํ์ง๋ง ํ ์คํธ๋ duration์ LENGTH.SHORT์ LENGTH.LONG ๋ ์ค ํ๋๋ง ๋๊ณ ์ปค์คํ ํ ์ ์์ผ๋ฏ๋ก ์๋์ ๊ฐ์ด ํด์ค์ผํ๋ค. object CustomToast { fun createToast(context: Context, message: String): Toast? { val inflater = LayoutInflater.from(context) val binding: ToastCustomBinding = DataBindingUtil.inflate(inflater, R.layout.toast_custom, null, false) binding.tvSample...
์ฝํ๋ฆฐ์ผ๋ก ๊ฐค๋ฌ๋ฆฌ์์ ์ด๋ฏธ์ง ๋ถ๋ฌ์ค๊ธฐ ์ฝํ๋ฆฐ์ผ๋ก ๊ฐค๋ฌ๋ฆฌ์์ ์ด๋ฏธ์ง ๋ถ๋ฌ์ค๊ธฐ ๊ธฐ๋ฅ - ๋ฒํผ ๋๋ฅด๋ฉด ๊ฐค๋ฌ๋ฆฌ ์ฑ ๋์ฐ๊ธฐ - ๊ฐค๋ฌ๋ฆฌ ์ฑ์์ ์ด๋ฏธ์ง ๋ถ๋ฌ์์ ํ๋ฉด์ ๋์ฐ๊ธฐ lqyout์ imageView์ button์ ์ถ๊ฐํ์๋ค. button์ ๋ฆฌ์ค๋ ์ถ๊ฐํ๊ณ int taekwang.tistory.com ์ด๊ฑธ๋ก ์ด๋ฏธ์ง ๊ฐ์ ธ์๋๋ฐ ์ด๋๋ก ํ๋ฉด ์ค๋ฅธ์ชฝ์ผ๋ก ํ์ ๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. ๊ฐค๋ฌ๋ฆฌ์์ ์ ํํ ์ฌ์ง์ Uri๋ฅผ ์ด์ฉํด ImageView์ ์ ๋ก๋ฉ ์ํค๋ ์์ค Glide.with(this).load(Uri).into(์ด๋ฏธ์ง๋ทฐ); "Uri" ๋ถ๋ถ์ ํ์ํ Uri ๋ณ์๋ฅผ ๋ฃ๊ณ "์ด๋ฏธ์ง๋ทฐ" ๋ถ๋ถ์ ์ด๋ฏธ์ง๋ทฐ id๊ฐ์ ๋ฃ์ผ๋ฉด ์ ์ฉ๋๋ค. Android) ImageView ์ฌ์ง์ด ์๋์ผ๋ก ํ์ ๋ ๋ ํด๊ฒฐ๋ฒ - Glide ๋ผ์ด๋ธ..
LoginViewModel.kt val loginEmail = MutableLiveData("") val loginPw = MutableLiveData("") - ๋ทฐ๋ชจ๋ธ์ ๋ผ์ด๋ธ ๋ฐ์ดํฐ Email, Pw ๋ง๋ค์ด์ค๋ค. activity_login.xml - ์๋ฐฉํฅ ๋ฐ์ดํฐ ์ฌ์ฉ - ์ธ์ ๋๊ฐ ๋๊ฒจ์ฃผ๊ธฐ BindingAdapters.kt @JvmStatic @BindingAdapter("isPossibleEmail", "isPossiblePw") fun isPossible(button: AppCompatButton, email : String?, pw : String?) { val pattern: Pattern = Patterns.EMAIL_ADDRESS val state : Boolean = (pw.isNull..
xml ํ์ผ์์ ๊ธฐ๋ณธ์ ์ผ๋ก xmlns ์์ฑ์ ์ด์ฉํด์ ์ด๋ฆ๊ณต๊ฐ(namespace)๋ฅผ ์ง์ ํ๋ค. android ์ด๋ฆ๊ณต๊ฐ์ ์ผ๋ฐ์ ์ธ ์๋๋ก์ด๋ ์์ฑ์ ์ง์ ํ ๋ ์ฌ์ฉํ๋ค. app ์ด๋ฆ๊ณต๊ฐ์ ๊ธฐ๋ณธ ์๋๋ก์ด๋ ์์ฑ๋ค์ ์ ์ธํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์ปค์คํ ์์ ฏ ๋ฑ์์ ์ ์๋ ์์ฑ๋ค์ ์ง์ ํ ๋ ์ฌ์ฉํ๋ค. tools ์ด๋ฆ๊ณต๊ฐ์ ์๋๋ก์ด๋ ์คํ๋์ค ์์์๋ง ์ ํจํ๊ณ ์ค์ ๋๋ฐ์ด์ค๋ ์ ๋ฎฌ์์๋ ์ ์ฉ๋์ง ์๋๋ค. ์ฐธ๊ณ ์ฌ์ดํธ) https://toepic.fail/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-tools-%EC%9D%B4%EB%A6%84%EA%B3%B5%EA%B0%84%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC-33b7ec9c94c7 ์๋๋ก์ด๋ tools ์ด..