본문 바로가기

Dead Code

(130)
[플러터] 리스트 정렬 얼마전 dart 에서 배웠던 리스트 정렬기능을 flutter에 적용해본다. 개발새발로 쓴 영어를 조심하시길..
[플러터] 이미지 자르기 코드를 쳐서 이미지에 둥근모서리를 주거나, 맘대로 모양을 만드려면, 은근 귀찮은 과정을 거쳐야한다. flutter는 ui툴이니까.. 편하게 되겠지? 라고 생각하면 오산이다.ㅋㅋㅋ 그래도 생각이 났으니 한번 해봤다.
[다트] 인풋값 체크하기(숫자/영문자) 입력된 문자가 숫자인지 문자(영어)인지 확인할수 있는 함수이다. 정규식을 활용한거 같은데,정규식이 잘 안외워지면 적어놓고 컨닝하는 수밖에 ㅋㅋ 운나쁘게 나의 구글검색에 걸린 코드는 아래 코드... 새로운 티스토리 에디터는 안되는게 참 많네..
[플러터] VS CODE - DART snippet 만들어 쓰기 일일이 코드를 쳐서 UI를 만드는 일이 생산성에 도움이 된다는 이야기를 초보자인 나는 이해를 못하겠다. 하지만, COPY/PASTE를 쉽게 쓸수 있다면 그 또한 파랑새는 아닐지 모른다. VS CODE EXTENSION으로 사용하는 DART 코드 SNIPPET은 좋다. 하지만, 코드가 펼쳐져도.. 내가 사용하지 못하는 코드라면 무용지물. 내가 쓴 코드를 등록해볼까.. Center( child: Text('center widget'), ) 코드를 SNIPPET으로 만들어보자. 일반적으로 아래 위치에 dart.json 파일이 있다. C:\Users\컴퓨터이름\AppData\Roaming\Code\User\snippets 머시라... JSON 이라고라... 보지 않아도 쌍따옴표와 중괄호, 컴마가 빼곡하게 있겠지..
[플러터] asset폴더에 있는 파일명 리스트로 만들기 이미지 폴더에 있는 파일명을 리스트로 만들면, 저장되어있는 이미지나 파일명을 활용해서 리스트뷰로 만들기 쉬울것 같다. 하지만 역시나 세상 쉬운일이 없다. 디렉토리를 접근하기가 쉽지 않다. 스택오버플로우에서 찾아낸 방법은. 타겟 폴더를 asset으로 등록하고, assetmanifest.json 파일을 dart:convert의 json.decode로 불러오는것. ;; json이라... 생각만 해도 끔찍하지만, 배끼는데 돈들지 않기 때문에, 그냥 한다. 아래처럼 images 폴더 안에 그림이 7장이 있고, 버튼을 누르면 리스트가 되어 나온다. 되니까 행복하구나.
[다트] 리스트소팅 with dart sort 리스트 소팅. 간단하게 될줄 알았는데, 역시 세상일 쉬운거 하나 없다. 다행히도 String 값이나. int 값이 같은 코드로 처리가 가능하다.
[플러터] AnimatedContainer 연습 플러터는 잛은 리로드 타임때문에 이것저것 해보기가 수월하다. AnimatedContainer는 공식사이트에 있는 튜토리얼로 잠시 연습. 기본적인거지만, 해놓고 보니. 나름 나쁘지 않다. ㅋㅋ
[플러터] Visibility 연습 네이티브로 앱을 구성할 때 상당히 당황했던 것 중 하나가, 화면 방향이었다. 음. 더 나아진건지 아닌지.... 모르겠지만, 플러터로는 한번 시도해봤다. UI툴이라서 그런가. 확실히 귀찮은 부분은 많이 줄어든것 같지만, 생각은 좀 해야 하나보다. 릴리즈는 아예 꿈도 꾸지 않고 있기 때문에, 나하고 크게 상관은 없겠지만. ㅋㅋ
[플러터] animation with Flare 시도 버튼을 눌렀을때의 현란한 애니메이션은 플러터의 강점이 아닐까. 세상 쉬운게 없다더니. 역시나 이도 만만치 않다. 그래도 시도는 해본다. 신기하게 되기는 하네.. 흔한 외국사람들이 괜찮은 디자인을 많이 만들어놓겠지 푸풉..
[플러터] 플러터웹 안드로이드 스튜디오는 느리다. 안드로이드 에뮬레이터는 훨씬. 느리다. VS CODE를 쓸수 있는 플러터로 안드로이드 스튜디오를 대체한건. 어찌보면 프로그램의 편의성은 전혀 고려되지 않은 부분이다. 그러나 해결할 수 없는 것이 있었으니, 이놈의 에뮬레이터. 게임할때 말고는 사용하지 않았던 리소스까지 쫙쫙 빨아먹는 느낌이다. 특히 노트북을 쓸때는 정말 배터리가 금방 달아버린다. 플러터 웹이 나에게 주는 효용은 안드로이드 에뮬레이터를 쓰지 않아도 되는 것. 그 이상도 이하도 아니다. 난 개발자가 아니니까. 스트레스 없는 취미생활을 지원해준 구글에게 고마워해야하나?
[플러터] 초보자 두번째앱. 투두리스트 TODO 리스트라기 보다는. 쉽게 데이터운영이 가능하다고(?) 했던 SharedPreference 연습용 앱. 리스트 페이지와 입력페이지로만 구성. 메인 -> 리스트가 보이는 페이지 입력창 -> 리스트를 입력하는 페이지 귀찮아서, 디자인은 기본빵으로 진행. 나를 애먹인건 의외로 네비게이터의 리스트 초기화 문제;;; 그저그런 TODO리스트
[플러터] 연습장. 첫앱. #1. Navigator, 첫번째 페이지로 pop하기 Navigator.popUntil(context, ModalRoute.withName(Navigator.defaultRouteName)); #2. 리스트 동적으로 생성하기 #3. 리스트 클릭 리스너 만들기 [main.dart] 더보기 import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; import './body_list.dart'; import './body_navigator.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { final String txt1 = 'firstT..
[코틀린코드연습장] SQLite 간단한 SQLite 연습. [Main.kt]class MainActivity : AppCompatActivity() { var dbHandler : DatabaseHelper? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) dbHandler = DatabaseHelper(this) button.setOnClickListener { if(validation()) { val users: Users = Users() var success : Boolean = false users.firstName = editText.t..
[코틀린코드연습장] SnackBar 스낵바 예제 [module, build.gradle]implementation 'com.android.support:design:28.0.0' [main.kt] button.setOnClickListener { var snackbar = Snackbar.make(llinearLayout, "this is SnackBar", Snackbar.LENGTH_LONG) snackbar.show() } button2.setOnClickListener { textView4.text = "This is Color Name TextView" var snackbar1 = Snackbar.make(llinearLayout, "Delete Message...." , Snackbar.LENGTH_LONG) .setAction..
[코틀린코드연습장] Firebase에 값 적고, 불러오기 나의 첫번째 목표는 외부 DB에 값을 쓰고, 읽어오기 까지였다. 이제. 그 꿈을 이뤘다. 그런데 왜 찝찝하지? - 구조는, 두개의 입력창으로 데이터를 받고, - 버튼을 통해 최신 리스트를 리스트 뷰로 받아온다. 언제나 그렇듯 메인 코드만.딴 사람 코드 보고 커스텀 시키는건 1시간, Firebase 연동오류 찾는거. 3시간.ㅠㅠ 취미로 하는 이짓이 지겨워질뻔. class MainActivity : AppCompatActivity() { var list : MutableList = mutableListOf() val ref = FirebaseDatabase.getInstance().getReference() override fun onCreate(savedInstanceState: Bundle?) { sup..
[코틀린코드연습장] Fragment생성 Fragment를 생성해보자 class Main2Activity : AppCompatActivity() { var first = firstFragment() var second = SecondFragment() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main2) button2.setOnClickListener { finish() } button3.setOnClickListener { var temp = supportFragmentManager.beginTransaction() temp.replace(R.id.container, f..
[코틀린코드연습장] 커스텀리스트 예전의 기억을 되살릴겸.. 복습이란걸 해본다. [메인 액티비티] class MainActivity : AppCompatActivity() { var lstdata1_title = arrayOf("Blue", "Purple", "Red") var lstdata2_text = arrayOf( "it is blue like Sky", "it is puple like icecream", "it is red like blood" ) var listdata3_img = intArrayOf(R.drawable.blue, R.drawable.purple, R.drawable.red) var list = ArrayList() override fun onCreate(savedInstanceState: Bundle?) { ..
[코틀린코드연습장] ListDialog 시간은 흐른 강의이지만, 까먹어서 다시 연습 유데미 강의를 보고 연습중임.https://www.udemy.com/softcampus-kotlinandroid/learn/v4/t/lectureclass MainActivity : AppCompatActivity() { var arrayItem = arrayOf("data1", "data2", "data3") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) button.setOnClickListener { var calendar = Calendar.getInstance() var y..
[코틀린코드연습장] BroadCastReceiver 앱이 두개가 있다. 1번앱에 브로드캐스트 리시버가 있고,2번앱에서 1번앱의 브로드캐스트 리시버를 인텐트로 불러서 사용한다. [1번앱 메인]class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) button.setOnClickListener { var intent = Intent(this, TestReceiver::class.java) sendBroadcast(intent) } } } [1번앱 브로드캐스트리시버 클래스] class TestReceiver : Br..
[코틀린코드연습장] ActivityACTION 인텐트를 통해서 다양한 기능을 날로 먹을 수 있다고 한다. 강좌에서 알려준 기능은 몇가지 안되지만,... 음.. 딴건 어디서 배우지? ㅋㅋ class MainActivity : AppCompatActivity() { var permissionList = arrayOf( Manifest.permission.CALL_PHONE ) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) checkpermission() button.setOnClickListener { var uri = Uri.parse("geo:37.243243, 131.8..
[코틀린코드연습장] startActivityForResult(3) . object 인텐트로 오브젝트를 넘겨보자. 별도로 클래스를 만들어서 넘겨본다. [별도로 만든 클래스]class TestClass: Parcelable { var data10 : Int = 0 var data20 : String? = null companion object { @JvmField val CREATOR : Parcelable.Creator = object : Parcelable.Creator { override fun createFromParcel(source: Parcel?): TestClass { val test = TestClass() test.data10 = source?.readInt()!! test.data20 = source?.readString() return test } override f..
[코틀린코드연습장] startActivityForResult(2) 다른 액티비티로, 종료시점에 데이터를 보내는 방식이다. [메인액티비티]class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) a1_btn1.setOnClickListener { var intent = Intent(this, Main2Activity::class.java) intent.putExtra("String", "StringData") intent.putExtra("Int", 1) intent.putExtra("Double", 1.0) intent.put..
[코틀린코드연습장] startActivityForResult(1) 여전히 어디에 사용할수 있는 메소드인지 알수는 없지만, 강좌에 있으니까 한번 해보자. 썩 어렵지는 않은데 왜 이리 암기가 안되지 ㅋ 두번째 액티비티에서 돌아올때 값을 물고 온다. OK는 -1, Cancel은 0, FirstUser는 1이다. [메인액티비티]class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) a1_btn1.setOnClickListener { var intent = Intent(this, Main2Activity::class.java) sta..
[코틀린코드연습장] 쓰레드...(4) RunOnUIThread 사용자가 만든 쓰레드 내의 화면처리를 메인쓰레드로 옮겨서 적용하는 방법 중.가장 간단한 방법인가보다.역시, 간단한 방법이 있었구나, 발생시킨 쓰레드 클래스 안에 런온유아이쓰레드 람다식을 쓰면 된다. class MainActivity : AppCompatActivity() { var isRunning = true override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) button2.setOnClickListener { var time = System.currentTimeMillis() textView3.text = "button clic..
[코틀린코드연습장] Handler.. sendMessage 핸들러를 통해서 화면처리를 하되, 출력되는 값을 메시지 명령어를 통해 가져온다. 메시지는 쓰레드 클래스 안에서 처리한다. (뭐라 쓴거지..) class MainActivity : AppCompatActivity() { var isRunning = true var displayHandler : DisplayHandler? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) displayHandler = DisplayHandler() var thread = TimeThreadClass() thread.start() } in..
[코틀린코드연습장] Permissions. 내가 과연 permission을 사용하는 앱까지 만들어 볼수 있을까? 심란하구만 [Manifest.xml] [main.kt] class MainActivity : AppCompatActivity() { var pm = arrayOf( Manifest.permission.SEND_SMS, Manifest.permission.RECEIVE_SMS, Manifest.permission.INTERNET, Manifest.permission.WRITE_CONTACTS, Manifest.permission.READ_CONTACTS, Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION ) override fun onC..
[코틀린코드연습장] 쓰레드(3) ... AsyncTask 음.. 이건 또 뭔가. class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) button.setOnClickListener { var time = System.currentTimeMillis() textView.text = "button Click : ${time}" } var sync = AsyncTaskClass() sync.execute(10, 20) } inner class AsyncTaskClass : AsyncTask() { override fun..
[코틀린코드연습장] 쓰레드(2).. 핸들러를 활용한 반복 도데체 뭐에 쓰는 거냐니까!! 혹시나...해서, 아래 코드는 UDEMY 강좌를 연습한 코드입니다. 자세한 내용은 강좌 원본을 보시기 바랍니다. 저한텐 권한이 없어요 https://www.udemy.com/softcampus-kotlinandroid/learn/v4/content class MainActivity : AppCompatActivity() { var handler : Handler? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) button.setOnClickListener { var time = Sys..
[코틀린코드연습장] 쓰레드.(1) 쓰레드는 뭐에 쓰는걸까. 음.. 여전히 모르겠음. 버튼을 누르면 현재 시간이 표시가 되고,가만히 있어도 현재 시간이 로그캣에 표시가 된다. 로그켓에 입력되는 부분을 별도의 쓰레드 클래스로 처리.(말이 맞나?) class MainActivity : AppCompatActivity() { var isRunning = false override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) button.setOnClickListener { var now = System.currentTimeMillis() textView.text = "Button ..
[코틀린코드연습장] 아무 기능도 없는 그림판 그림판에는 광고가 있으니, 그냥 그림판을 만들어볼까 했는데, 쉽지 않고만... 인터넷을 뒤져서 한번 해본다. 그림판 지우기는 편의상 옵션메뉴로 처리(배운걸 써먹는구만 ㅋ) [메인.xml] [메인.kt]class MainActivity : AppCompatActivity() { lateinit var canvasView: CanvasView override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) canvasView = findViewById(R.id.canvas) // clearCanvas.setOnClickListener(ClearCa..