목록전체 글 (377)
만족
http://jusungpark.tistory.com/38 책보고는 무슨소린지 몇시간동안 이해 못했는데 자세하게 잘 써주셨습니다. 길더라도 한번 읽어보시면 좋을 것 같습니다.
https://developer.android.com/guide/topics/ui/dialogs.html?hl=ko#FullscreenDialog Dialog는 액티비티를 띄우는 것 처럼 화면 전체를 차지하여 내용을 표시하는 것이 아닌 작은 대화상자 모양을 이용하여 사용자에게 내용을 표시할 수 있게 해줍니다. AlertDialog클래스를 직접 이용하여 만들 수도 있지만API에서는 AlertDialog.Builder 클래스를 이용하여 만드는 것을 권장합니다. AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setMessage("표시할 메시지") .setPositiveButton("긍정 버튼에 표시될 텍스트", new..
For hiding keyboard: InputMethodManager imm = (InputMethodManager)getActivity().getSystemService( Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);For Showing keyboard: InputMethodManager imm = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
여러 개의 뷰들을 뷰 플리퍼에 포함시켜 뷰 플리퍼 내에 들어있는 여러가지 뷰 들중 하나의 뷰를 선택하여 보여줄 수 있게 한다. ViewFlipper태그를 xml에 추가하고, 해당 태그 내부에 뷰 플리퍼에 속하게 할 뷰들을 추가한다. 그리고 나서 JAVA에서 findViewById로 flipper를 찾는다. 추가한 뷰는 첫번째 뷰부터 시작해서, showNext() //다음 뷰 보여주기showPrevious() //이전 뷰 보여주기setDisplayedChild(int whichChild) //원하는 인덱스의 뷰 보여주기 를 이용하여 보여줄 뷰를 전환할 수 있다. 예를 들어서 xml코드가 이렇게 되어 있고 JAVA코드가 이렇게 되어 있다면 package com.example.windows10.exflippe..
invisible은 단순히 화면에만 보이지 않게 한다. 따라서, 보이지 않더라도 해당 뷰는 자리를 차지하게 된다. gone은 아예 액티비티에 그려지지 않게 된다. 따라서, 자리도 차지하지 않는다.
뷰나 레이아웃이 움직이거나, 투명도가 바뀌는 등의 행동을 애니메이션으로 표현하는 방법. res폴더에 anim폴더를 새로 만들고, xml파일을 하나 만든다. set태그 안에 translate, alpha, rotate 등의 태그를 포함하는 형태이다. 위의 xml은 X좌표값이 100%p이고 알파값이 0.5부터 시작해서 X좌표값이 0%p이고 알파값이 1.0으로 1초동안 변화한다. 이제 이 xml을 뷰에 적용하려면, JAVA코드로 넘어간다. Animation toLeft;처럼 Animation 객체를 생성하고 toLeft= AnimationUtils.loadAnimation(this, R.anim.animation_toleft);처럼 AnimationUtils.loadAnimation 메소드를 이용하여 해당 애..
getActionBar().setDisplayShowTitleEnabled(false);을 사용하거나 getActionBar()가 NullPointerException을 발생시킨다면 getSupportActionBar().setDisplayShowTitleEnabled(false); getSupportActionBar().hide();을 대신 사용한다. 또는 코드 대신 Style을 변경하는 방법도 있다. value/style.xml로 들어가서 를 처럼 바꾸면 된다.(parent의 속성값을 ...DarkActionBar에서 ...NoActionBar로 바꾼다.) 참조: https://stackoverflow.com/questions/7655874/how-do-you-remove-the-title-text-..
때때로 우리는 뷰의 상태에 따라서, 뷰의 속성값을 바꾸어 줄 필요가 있다. 예를 들어서, EditText태그가 클릭 되었을 때, 배경을 바꾸어주는 등의 행동을 통하여, 그 태그의 상태를 표시하는데 도움을 줄 수 있다. Selector Tag xml에서 사용되는 태그의 하나이다. Selector Tag는 하나 이상의 item 태그를 사용하며, 이 item태그의 속성에 해당 뷰의 상태를 명시함으로써어떤 상태일 때, 어떤 동작을 할 지 결정할 수 있게 된다. 예시) 해당 태그가 포커스를 가질 때는 Primary(푸른색 계열)로, 가지지 못했을 때에는 Accent(분홍색 계열)로 상태에 따라서 속성값을 바꾸어 줄 수 있다. 이제 이 xml파일을 어떤 태그의 background속성으로 설정해준다면, focusin..
Focusable이 true로 되어 있는 뷰가 사용자와 Interaction하기 시작할 때, 그 뷰는 Focus를 가졌다 라고 한다. 대표적 예로는 EditText가 있으며, EditText를 누르면 키보드가 보여지면서 EditText와 상호작용할 수 있게 되는데, 이 때 EditText는 Focus를 갖게 된다. Focus를 갖기 위해, Focusable의 속성이 true이어야 하는데, EditText의 경우 별도의 작업이 필요 없이 true를 값으로 갖지만TextView와 같은 태그들은 임의로 속성값을 바꾸어 주어야 한다. Focusable 속성값 변경하기 1. xml에서 변경하기 해당 태그에 android:focusable="true"android:focusableInTouchMode="true"..
우리가 컴퓨터에서 JAVA를 이용하여 GUI를 개발할 때, 어떤 요소가 눌리거나 (ex 버튼) 키보드가 눌릴 때해당 동작을 인식하여, 특정 동작을 하게 만들 수 있었다. 안드로이드에서도 마찬가지로 특정 동작을 인식할 수 있는데,안드로이드에서는 키보드나 마우스를 사용하지 않고, 터치패널이나 버튼을 이용하여 장치에 입력신호를 보내게 된다. PC에서와 달리 안드로이드는, MouseListener와 KeyboardListener대신, TouchListener와 KeyListener를 이용한다. EventListener in Android Studio OnTouchListener //특정 뷰가 터치되는 동작을 인식OnKeyLIstener //특정 물리키가 눌리는 동작을 인식(ex 볼륨 업)OnClickListen..
Fragment에 관한 변경 사항을 commit()할 때마다 beginTransaction()으로 FragmentTransaction을 새로 만들어 주어야 한다 참조: http://stackoverflow.com/questions/24561874/android-fragmenttransaction-commit-already-called
프래그먼트(Fragment)란? 액티비티와 유사한 구조를 띄고 있으며, 액티비티 위에 붙여 사용하여 하나의 액티비티에 여러개의 프래그먼트를 붙임으로써, 동시에 여러 개의 화면을 보여줄 수 있다.(하나의 액티비티에 조각(Fragment)들을 붙여 사용한다) 왜 사용하는가? 하나의 액티비티에 여러 가지 xml을 불러올 수 있으며 또한 Activity 각각 intent로 만들어 시작하는 것 보다, 하나의 Activity위에 Fragment를 교체해 가며 띄우는 것이 속도 측면에서 훨씬 빠르기 때문이다. 사용법 예를 들면 아래와 같은 어떤 layout.xml에서, fragment를 추가하고 싶다면 태그를 사용한다. (첫 글자가 소문자임에 유의한다) 단, fragment는 일반적으로 FrameLayout 안에 위..
이 글은 아래 링크에서 새로 작성되었습니다 satisfactoryplace.tistory.com/203 [Android] 권한 (Permission) developer.android.com/training/permissions/requesting?hl=ko 앱 권한 요청 | Android 개발자 | Android Developers 모든 Android 앱은 액세스가 제한된 샌드박스에서 실행됩니다. 앱이 자체 샌드박스 밖에.. satisfactoryplace.tistory.com 안드로이드 마시멜로(6.0) OS 이전에는, 앱을 설치하기 전에 모든 앱 권한을 한번에 요구하고, 거절할 경우 설치 자체가 되지 않았으나 업데이트 이후에는, 기본 권한(Normal Permission)만 설치 전에 물어보고 위험 ..
하나의 객체를 여러개의 객체에 전달하는 방식을 "브로드캐스팅(BroadCasting)" 이라고 하고 이러한 정보를 "브로드캐스트 수신자"를 이용하여 받을 수 있다. 브로드캐스트 수신자를 새로 만들게 되면, Manifast에 추가해주어야 한다. 예를 들어, SMS라는 브로드캐스트를 수신하는 브로드캐스트 수신자를 추가하려면 이렇게 Manifast에 추가해주면 된다. public class SMS_Receiver extends BroadcastReceiver{ @Override public void onReceive(Context c, Intent i){ if(i.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){ Toast.makeText(c, ..
Background에서 실행되는 Process. Activity를 새로 만들면 Manifast에 추가하는 것과 마찬가지로, Service도 만든 후에 Manifast에 추가해주어야 한다. 서비스 클래스의 생성 Service클래스를 상속하며, 쓰레드 사용을 위해 Runnable 인터페이스를 implements 한다. public class ExService extends Service implements Runnable {...}Runnable는 인터페이스이므로, onBind()와 run()메소드가 반드시 정의되어야만 한다. 예를 들어 클래스를 정의하면 public class ExService extends Service implements Runnable { public static final Strin..
액티비티를 띄운 상태에서 물리적으로 back key를 누르게 되면 부모 클래스에 존재하는 onBackPress()라는 메소드가 호출이 되어 열려있는 Acitivity가destroy되는 구조이다. 이를 2초 내에 두번을 연속으로 눌러야만 액티비티가 닫히도록 하려면 onBackPress를 Override해주어야 한다. //뒤로가기 버튼을 두번 연속으로 눌러야 종료되게끔 하는 메소드 private long time= 0; @Override public void onBackPressed(){ if(System.currentTimeMillis()-time>=2000){ time=System.currentTimeMillis(); Toast.makeText(getApplicationContext(),"뒤로 버튼을 한..
solution1> 가장 빈번하게 발생하는 원인인, activity를 새로 만들고 난 후 manifast에 activity를 추가해주지 않아서 그렇다. 대부분은 눈에 불들어와서 폭풍코딩하다가 한두개씩 실수로 누락하는 경우에 발생한다. solultion2> manifast의 package 속성을 확인하자. 예를 들어, 저부분에서는 package="com.example.denky.grattimetable"이라고 되어 있는데, 이럴 경우에는 저 패키지 안에 있는 activity만 인식이 가능하다. 저 패키지 밖에 있는 activity를 아무리 추가해줘봤자 얜 저 패키지 밖에 있는건 인식 못하기 때문에 ㄹㅇ 삽질이 아닐 수 없다. solution3> 오타 확인하기 하 시발 이거떄문에 2시간동안 구글링했는데 잘 ..