본문 바로가기

안드로이드126

[JAVA][Android] 동적으로 생성한 View를 삭제하기 안녕하세요. 오늘은 지난 포스팅에 이어 동적으로 생성한 View를 역순으로 삭제하는 방법에 대해 알아보겠습니다. https://stickode.tistory.com/500 (해당 포스트와 이어지는 내용입니다. ) 역순으로 삭제한다는 의미는 View가 생성될 때 1,2,3 이렇게 생성이 되었다면 삭제될 때는 3,2,1 이렇게 삭제된다는 뜻입니다. 먼저 생성한 View를 삭제하기 위해 View를 생성할 때 각각 View에 id를 할당해 주어야 합니다. //MainActivity.java public class MainActivity extends Activity implements View.OnTouchListener { private final int DYNAMIC_VIEW_ID = 0x8000; // V.. 2022. 8. 2.
[JAVA][Android] 동적으로 View 여러 개 추가 후 해당 View 드래그 앤 드랍으로 이동시키기 안녕하세요. 오늘은 안드로이드에서 VIew를 동적으로 여러개 추가하고, 해당 View들을 드래그 앤 드랍으로 이동시키는 것을 해보겠습니다. 해당 기능은 가구 인테리어 배치나, 좌석배치도에서 좌석을 원하는 위치에 배치시키고 싶을 때 사용할 수 있습니다. 바로 레이아웃 파일부터 보겠습니다. 화면을 보시는 것과 같이 View를 추가하는 버튼과 삭제하는 버튼을 생성하였습니다. (버튼 삭제부분은 다음 시간에 알아볼 예정입니다.) 그리고 두 버튼 아래에 LinearLayout을 배치해 버튼이 추가될 공간을 만들어 줍니다. 다음으로 Java 파일을 보도록하겠습니다. //MainActivity.java public class MainActivity extends Activity implements View.OnTouc.. 2022. 7. 18.
[kotlin][Android] 안드로이드에서 긴 글 가져오기 안녕하세요. 오늘은 안드로이드에서 줄바꿈이 적용된 긴 글을 텍스트뷰에 위치시켜야 할 때 사용할 수 있는 방법에 대해 알아보겠습니다. 1. 필요한 텍스트 파일을 만들어서 assets 폴더에 넣어줍니다. * 만약 assets 폴더가 없다면 [app 우클릭] -> [New] -> [Forder] -> [Asset Folder]를 만드시면 됩니다. 2. 아래와 같은 메서드를 만들어줍니다. fun getAssetsTextString(mContext: Context, fileName: String): String{ val termsString = StringBuilder() val reader: BufferedReader try { reader = BufferedReader( InputStreamReader(mCo.. 2022. 7. 7.
[JAVA][Android] xml파일 없이 Java 언어 만을 사용하여 화면 제작 안녕하세요. 오늘은 java 언어만을 사용해 안드로이드의 화면을 구성하는 방법을 가져왔습니다. 일반적으로 안드로이드의 화면 구성을 할 때에는 xml 화면을 제작한 후, java 파일 내에서 setContentView에 xml 파일을 설정해 사용하는데요. 오늘은 xml 파일 없이 자바로만 안드로이드의 화면 구성을 해보겠습니다. 해당 자바 파일 입니다. //MainActivity.java public class MainActivity extends AppCompatActivity { TextView tv;// TextView 참조변수 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);.. 2022. 7. 3.
[Java][Android] 안드로이드 CircleImageView 사용해보기 CircleImageView 라이브러리를 사용해서, 원형 이미지를 만들어 보겠습니다. build.gradle(Module) dependencies { ... implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'de.hdodenhof:circleimageview:3.1.0' .. } MainActivity.java public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.a.. 2022. 3. 13.
[Java][Android] 안드로이드 Library만들기 안드로이드 앱을 개발하면서 다양한 오픈소스 라이브러리를 사용할 때가 많죠? 항상 가져다 쓰는데 익숙해질 때쯤 이런 궁금증은 안생기셨나요? "내가 직접 라이브러리를 만들 수는 없을까?" 오늘은 바로 라이브러리를 직접 만드는 방법에 대해서 포스팅을 해보겠습니다. 먼저 새 프로잭트를 생성해 주세요. 보여지는 부분이 없으므로 No Activity를 지정해 줍니다. 그리고 프로젝트의 패키지명, 이름을 지정합니다. LibraryTest로 지정해 주겠습니다. build.gradle 수정 1. plugins id 수정 plugins { id 'com.android.application' } ---> 변환 plugins { id 'com.android.library' } 2. defaultConfig의 applicati.. 2021. 11. 30.
[Java][Android] 터치 제스처 감지 (Gesture Detector) 터치 이벤트에 이어 이번에는 터치 제스처에 대해 알아보겠습니다. 안드로이드는 사용자의 제스처를 쉽게 구분하기 위해 GestureDetector 인터페이스가 있습니다. - onDown (터치) - onShowPress (onDown 보다 길게 터치) - onSingleTapUp (터치가 끝날 때) - onLongPress (onShowPress보다 길게 터치) - onScroll(스크롤) - onFling (스크롤과 비슷하지만 손가락으로 튕길 때) 다음과 같은 종료가 있습니다. 그럼 한번 알아볼까요? activity_main.xml 윗 영역은 제스처를 할 영역이고 아래 부분은 어떤 제스처인지 출력해주는 영역입니다. MainActivity.java package com.example.touchevent; i.. 2021. 11. 29.
[Java][Android] 터치 좌표 출력하기 오늘은 안드로이드 화면에서 터치를 했을때 안드로이드에서 좌표를 어떻게 인식하는지 알아보는 과정을 가지겠습니다. 응용을 하게되면 그림그리기와 같은 앱도 만들 수 있겟죠? 먼저 저희가 다룰 이벤트는 Touch 이벤트 입니다. 저희가 터치를 하고 드래그를 하면서 움직일때 모든 동작들을 인식하게 될 텐데요 먼저 화면을 그려보죠. activity_main.xml 윗 부분은 저희가 터치를 할 영역이고 아래 영역은 터치한 영역의 좌푯값을 출력해줄 영역입니다. 보기 쉽게 간단하게 구분해 주는게 좋겠죠? MainActivity.java import androidx.appcompat.app.AppCompatActivity; import android.gesture.GestureOverlayView; import andro.. 2021. 11. 17.
[Kotlin][Android] Logger 라이브러리 사용하기 안녕하세요. 이번 시간에는 코틀린에서 로거 라이브러리를 사용하는 방법을 알려드리겠습니다. 자바를 통해 로그 찍는 방법은 아래 링크를 통해 확인해 주세요. https://stickode.tistory.com/257 저는 로그 라이브러리를 자주 사용하는데요. 그 이유는 다음 세 가지가 있습니다. 1. 코드의 흐름을 파악하기 쉽다. - 다른 클래스에 있는 메서드를 이용한 로직 같은 경우 흐름 파악하기가 더 용이합니다. 2. JSON 형태의 데이터를 좀 더 쉽게 찍을 수 있다. 3. Logcat에 찍힌 로그를 클릭하면 스크립트 위치로 바로 이동할 수 있습니다. 로거를 이용할 수 있는 라이브러리는 아래 페이지에서 확인 할 수 있습니다. https://github.com/orhanobut/logger GitHub .. 2021. 11. 6.