반응형

분류 전체보기 492

[Android/Kotlin] 내장 메모리의 Download 폴더 경로를 출력하는 앱 만들기

개발하는 이유 회사 내 Embeded개발자분들이 개발을 진행하실 때 휴대폰 내부 Download폴더의 경로가 필요한 경우가 종종 있다. 그런데 휴대폰 제조사마다 Download 폴더 경로가 조금씩 다른 경우가 있기 때문에 매번 확인하기 번거로워 앱으로 간단히 만들었다. 내장 메모리 Download 폴더란? 안드로이드 폰의 [내 파일] 어플에 들어가면 [저장공간]이 쭉 나온다. 이 중 [내장메모리]로 들어가면 DCIM, Download, Music, Pictures 폴더가 보인다. 이 중 Download폴더가 위치한 경로를 출력해주는 앱을 개발해보려 한다. 레이아웃 Button을 누르면 해당 기기 Download폴더의 상대경로가 TextView에 출력되는 화면을 만들었다. activity_main.xml ..

📜 TIL 2022.10.06

Android/Kotlin #ClassCastException에러 : androidx.appcompat.widget.LinearLayoutCompat cannot be cast to android.widget.LinearLayout

문제상황 간단히 AddView를 통해 리스트를 만드는 작업을 하고 있었다. Activity와 xml을 모두 작성하고 애뮬레이터를 실행시켰는데, 앱이 켜지자마자 꺼지는 현상이 일어남과 동시에 아래의 에러를 뱉었다. 발견된 에러 코드 (텍스트) 2022-10-04 12:56:14.546 7369-7369/org.techtown.kotlinFunction E/AndroidRuntime: FATAL EXCEPTION: main Process: org.techtown.kotlinFunction, PID: 7369 java.lang.RuntimeException: Unable to start activity ComponentInfo{org.techtown.kotlinFunction/org.techtown.kotli..

기타/🚨 에러 2022.10.04

[Android/Kotlin] VideoView 풀 스크린 만들기 & 앱 상단 어플 이름 없애기

VideoView 풀 스크린 만들기 우선, 영상을 재생시키면 가로방향으로 영상을 재생시키는 기능은 아래 코드로 구현이 가능하다. AndroidManifest.xml 근데 아래 결과물과 같이 오른쪽에 여백이 남은 채로 영상이 재생된다. 해결방법 아주 어이없게도 비디오를 재생시킬 때 보여주는 xml파일의 최상단 레이아웃을 ConstraintLayout으로 바꿔주면 된다. RelativeLayout과 LinearLayout에서 full-screen이 안되는 이유는 잘 모르겠다.. 결과물 앱 상단 어플 이름 없애기 Youtube 처럼 꾸민 내 어플 상단에 보라색으로 내 어플이름이 나오는게 보기가 안좋아 삭제하기로 했다. 해결방법 values파일의 themes.xml에 아래 코드를 추가시키면 바로 없앨 수 있다...

Webview를 사용해 웹페이지 로드하는 방법

방법 1 Webview를 사용해서 웹페이지를 로드하는 방법 url을 띄울 수 있는 여러가지 옵션 중 내가 만든 앱은 보이지 않는다 즉, Crome과 같은 다른 어플리케이션을 사용해야 하며 내가 만든 어플 위에 해당 어플이 켜지며 웹페이지가 오픈된다 방법2 Intent를 사용해서 webview에 웹페이지를 로드하는 방법 url을 띄울 수 있는 여러가지 옵션 중 내가 만든 앱도 보인다 즉, 내가 만든 앱 안에서 웹페이지가 오픈된다 방법 1 & 2 공통으로 세팅되어야 하는 것 Android 어플리케이션에서 인터넷 접속을 할 수 있도록 설정해주려면 Manifest.xml에 아래 코드가 기재되어 있어야 한다. 또한 두개 모두 공통적으로 아래의 xml을 사용해보자 activity_review.xml 방법 1 cla..

[Word] 표에 들어간 글자 위로 쏠림현상 해결하는 방법

문제상황 아래와 같이 글자가 위로 쏠려서 나온다. 앞 뒤로 공백이 전혀 안들어간 상태임에도 말이다. 해결방법 Step1. 표에 마우스 커서를 올려보면 다음과 같이 +모양이 나올 것이다. 이 부분을 클릭해주면 상단에 표 도구가 뜬다. 표 도구의 레이아웃란에 들어가서 빨간 네모박스로 표시된 부분을 클릭해주자. 텍스트를 셀의 정 가운데에 배치해주는 버튼이다. Step2. 그 다음 홈 탭의 단락 부분으로 가자. 빨간색 네모 박스 부분을 클릭하면 단락 설정을 수정할 수 있는 팝업창이 하나 뜬다. 여기서 단락 뒤 간격과 줄 간격을 모두 줄여주자. 아래 그림과 같이 단락 뒤는 0줄, 줄 간격은 최소로 설정! 아리따운 결과물 그저 마음이 편안해지는 결과물이다..

📜 TIL 2022.09.06

Android개발 시 데이터 바인딩이란?

데이터 바인딩이란? 레이아웃와 데이터를 결합해주는 라이브러리 프로그램 방식이 아니라 선언적 형식으로 결합할 수 있게 도와줌 안드로이드에서 공식적으로 지원하는 라이브러리 아래와 같이 레이아웃 파일에서 직접 View에 텍스트 할당 데이터 바인딩 장점 레이아웃과 데이터를 연결하기 위해 필요한 코드를 최소화 시킬 수 있음 findViewId() 를 호출하지 않아도, 자동으로 xml 에 있는 VIew 들을 만들어준다. RecyclerView 에 각각의 item 을 set 해주는 작업도 자동으로 진행된다. data 가 바뀌면 자동으로 View 를 변경하게 할 수 있다. xml 리소스만 보고도 View 에 어떤 데이터가 들어가는지 파악이 가능하다. 코드 가독성이 좋아지고, 상대적으로 코드량이 줄어든다. 데이터 바인딩..

[Android/Kotlin] 블루투스 목록 PJT -1. 데이터 바인딩하여 버튼 클릭 시 Toast메세지 출력하기

선행작업 XML에 간단한 버튼만 만들어 주었다. Step1. 데이터 바인딩 진행 1. app/build.gradle에 dataBinding 요소 추가 android { ... dataBinding{ enabled = true } } 2. dataBinding 사용하려는 XML파일의 소스를 태그로 감싸주기 주의할 점 : xml 버전과 인코딩 타입을 명시한 태그가 항상 제일 먼저 와야한다 이제 각 레이아웃 파일에 대해 binding class가 자동으로 생성이 되는데, 이 때 이름은 data binding을 사용하는 클래스의 이름에 따라 생성된다. 예) 자동으로 생성되는 activity_main.xml의 binding class의 이름 : ActivityMainBinding 3. Activity로 이동하여 ..

Kotlin # There's a cycle in the delegation calls chain

🎈 문제 Kotlin으로 코딩하던 중에 다음과 같은 에러를 맞닥드렸다. There's a cycle in the delegation calls chain 해당 에러를 stackoverflow에 검색해 보니 다음과 같은 답변을 볼 수 있었다. You get this error because you are calling the secondary constructor with your secondary constructor, thus making it a cycle. 부생성자로 부생성자를 부르고 있다..? 🎈 해결 가만히 생각해보니 주생성자 지정을 안해준 것이 기억났다. 간단히 주생성자를 지정해주니 해당 에러가 사라졌다. 아래는 예시 코드이다.

기타/🚨 에러 2022.08.02

Kotlin # Companion Object

Companion Object(동반자 객체) Java나 C#과는 달리, 코틀린에는 static 멤버 변수나 함수가 없다. 만약 클래스 인스턴스없이 어떤 클래스 내부에 접근하고 싶다면, 클래스 내부에 객체를 선언할 때 companion식별자를 붙인 object를 선언하면 된다. companion object를 선언하면 클래스 이름을 식별자로 사용함으로써 Java나 C#에서 static 메소드를 호출했던 것과 같이 해당 객체를 사용할 수 있다. companion object는 어떤 클래스의 모든 인스턴스가 공유하는 객체를 만들고 싶을 때 사용하며, 클래스당 한 개만 가질 수 있다. class MyClass { companion object Shop { fun create(): MyClass = Myclass..

반응형