=======================
=======================
=======================
ImageButton을 이용하여 클릭했을 경우, 포커스 있을 경우, 눌렀을 경우 등등 이벤트를 발생하는 법을 알려드리겠습니다.
이와 같은 효과를 얻기 위해서는 SELECTOR라는 속성을 이용해야 합니다.
1. drawable 폴더에 "btn_on.png","btn_off.png","icon_on_off.xml" 을 생성합니다.
2. icon_on_off.xml 을 열어 아래 코드를 삽입합니다.
<?xml version="1.0" encoding="utf-8"?>
<!-- selected -->
<item android:state_selected="true"
android:drawable="@drawable/btn_on" />
<!-- pressed -->
<item android:state_pressed="true"
android:drawable="@drawable/btn_on" />
<!-- focused -->
<item android:state_focused="true"
android:drawable="@drawable/btn_on" />
<!-- default -->
<item android:drawable="@drawable/btn_off" />
</selector>
※ 여기서 주의할 점 default 이미지 값은 맨 하단에 명시해야 정상적으로 작동된다는 점 잊지 마세요!!
3. ImageButton 을 사용하는 레이아웃 XML 파일을 열어서 아래와 같이 속성을 지정합니다.
<ImageButton android:text="Button On Off"
android:id="@+id/menu1"
android:background="#000000"
android:src="@drawable/menu_n1"
... ></ImageButton>
※ 여기서 또 주의할 점 background에 #00000000을 넣어주지 않으면 안드로이드 기본 버튼 위에 이미지를 올린다는 점!
4. 끝 ^^
여러분 모두 다이나믹하고 멋진 레이아웃 구성해 보시길 바랍니다..ㅎㅎ
p.s) 다양한 상태에 따른 이미지 지정도 가능 하다는 점.. ^^
<?xml version="1.0" encoding="utf-8"?>
<item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/bt_2" />
<item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/bt_2" />
<item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/bt_2" />
<item android:drawable="@drawable/bt_1" />
</selector>
=======================
=======================
=======================
02) ImageButton
ImageButton 또는 ImageView를 사용할 경우 onclick 이벤트 발생 시 이미지를 다르게 하여 클릭이벤트가 발생하고 있음을 보여주고 싶을 경우가 있다.
예를 들면 다음과 같은 경우이다.
이미지 버튼이 아래와 같은 모양이었는데..
클릭을 하는 순간 아래와 같이 보이고 싶은 경우
XML을 이용하여 편하게 할 수 있는 방법이 있다.
다음과 같은 XML을 작성해 보자.
?xml version="1.0" encoding="utf-8"?>
여기서 blue_check는 테두리가 있는 blue_check.png라는 파일이고 blue_uncheck는 테두리가 없는 blue_uncheck.png라는 파일이다.
위 파일을 이미지가 있는 디렉토리인 drawble밑에 color_blue.xml 이라고 저장을 하자. 그리고 실제 레이아웃 파일에서는 아래와 같이 구현한다.
ImageButton android:id="@+id/color_blue" android:background="@drawable/color_blue" android:layout_height="wrap_content" android:layout_width="wrap_content" />
버튼을 클릭할때마다 이미지가 자동으로 변환되는 것을 확인할 수 있을 것이다.
=======================
=======================
=======================
출처: http://dmh11.tistory.com/tag/ImageButton%20%ED%81%B4%EB%A6%AD
- 2010/10/06 ImageButton 클릭시 이미지를 변경 해보자
ImageButton 클릭시 이미지를 변경 해보자
프로그래밍/Java / Android 2010/10/06 10:35 |
ImageButton 클릭시 이미지를 변경 해보자
안드로이드에서는 Button에 이미지를 넣는 위젯으로 ImageButton을 쓰고 있는데 UI적으로 더 이뻐보이게 하기위해서 클릭시 이미지를 변경해주는 경우가 많다고 생각합니다. 그래서 ImageButton을 클릭시 이미지를 변경을 하는 코드를 한번 작성을 해보겠습니다.
일단 클릭시 이미지를 변경해주는 res/drawable폴더에 XML파일을 만들어야 됩니다.
res/drawable 마우스 오른쪽 버튼 클릭 -> New -> XML -> FileName : button.xml -> Finish
button.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- 버튼 클릭시 이미지 --> <item android:drawable="@drawable/food_ed_ov_145_51" android:state_pressed="true"> <!-- 기본이미지 --> <item android:drawable="@drawable/food_ed_145_51"> </item></item></selector> |
위와 같이 XML파일을 만들었다면 이제 ImageButton에 넣어주면 됩니다.
imagebuttondemo.xml
<imagebutton xmlns:android="http://schemas.android.com/apk/res/android" android:background="@drawable/button" android:layout_height="wrap_content" android:layout_width="wrap_content"> </imagebutton> |
이렇게 background부분에 res/drawable 폴더에 만들었던 xml파일명을 입력해주면 됩니다.
이미지를 src가 아닌 background에 넣는 이유는 src에 넣으면 버튼에 테두리가 표현이되기 때문에 background를 이용해서 넣어야지 테투리가 없이 이미지만이 표기될수가 있습니다.
왼쪽화면이 기본적인 상태이고 오른쪽화면이 클릭시 이미지 입니다.
이렇게 클릭시 이벤트를 주워서 변경할수도 있지만 간단하게 XML형태로 만들어서 적용하면 훨씬간단하게 적용을 할수 있습니다.
=======================
=======================
=======================
출처: http://blog.naver.com/lowmans/100121671992
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2008 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_window_focused="false" android:state_enabled="true"
android:drawable="@drawable/btn_default_normal" />
<item android:state_window_focused="false" android:state_enabled="false"
android:drawable="@drawable/btn_default_normal_disable" />
<item android:state_pressed="true"
android:drawable="@drawable/btn_default_pressed" />
<item android:state_focused="true" android:state_enabled="true"
android:drawable="@drawable/btn_default_selected" />
<item android:state_enabled="true"
android:drawable="@drawable/btn_default_normal" />
<item android:state_focused="true"
android:drawable="@drawable/btn_default_normal_disable_focused" />
<item
android:drawable="@drawable/btn_default_normal_disable" />
</selector>
=======================
=======================
=======================
안드로이드SDK가 기본으로 제공하는 폰의 버튼을 사용하면 클릭시 배경이 오렌지색으로 바뀌는 모습을 볼 수 있을 것이다. 하지만 UI작업에서는 필요에 따라 그것을 없애고 커스텀 이미지를 써야 하는 경우가 생기는데 방법을 찾아보았다.
1. Button 의 Subclass 중에 ImageButton이 존재하지만 보기처럼 이것은 배경을 위한 것이 아니고 앞의 텍스트를 이미지로 바꾼것이다. -> 내가 찾는 것은 아니군.
Drawable 중에 state (아래의 리스트 참조)에 따라 바뀌는 녀석StateListDrawable이 있는데 바로 이것을 backgroud로 지정하면 된다!
간단하네. 이렇게 되면 코드가 아닌 xml상에서 처리가 가능하다.
그런데 만약 눌린상태의 텍스트의 색상을 바꾸고 싶으면 어떻게 해야할까?
이번에는 state에따라 color값을 바꾸는 녀석 ColorStateList를 사용하면 된다. 아래예제는 TextView의 색상을 바꾸는 방법이다.
xml로 표시할 경우 같은 selector 태그를 사용한다.
http://stackoverflow.com/questions/1342410/android-text-view-color-dont-change-when-disabled
State List
A StateListDrawable is a drawable object defined in XML that uses a several different images to represent the same graphic, depending on the state of the object. For example, a Button widget can exist in one of several different states (pressed, focused, or niether) and, using a state list drawable, you can provide a different background image for each state.
You can describe the state list in an XML file. Each graphic is represented by an <item> element inside a single <selector> element. Each <item> uses various attributes to describe the state in which it should be used as the graphic for the drawable.
During each state change, the state list is traversed top to bottom and the first item that matches the current state is used—the selection is not based on the "best match," but simply the first item that meets the minimum criteria of the state.
ColorStateList
Lets you map View state sets to colors. ColorStateLists are created from XML resource files defined in the "color" subdirectory directory of an application's resource directory. The XML file contains a single "selector" element with a number of "item" elements inside. For example:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:color="@color/testcolor1"/>
<item android:state_pressed="true" android:state_enabled="false" android:color="@color/testcolor2" />
<item android:state_enabled="false" android:color="@color/testcolor3" />
<item android:color="@color/testcolor5"/>
</selector>
This defines a set of state spec / color pairs where each state spec specifies a set of states that a view must either be in or not be in and the color specifies the color associated with that spec. The list of state specs will be processed in order of the items in the XML file. An item with no state spec is considered to match any set of states and is generally useful as a final item to be used as a default. Note that if you have such an item before any other items in the list then any subsequent items will end up being ignored.
For more information, see the guide to Color State List Resource.
[출처] Custom background image Button 만들기|작성자 돌봉엉아
[출처] Android Button drawable 속성정보 |작성자 아즈라엘
=======================
=======================
=======================
'스마트기기개발관련 > 안드로이드 개발' 카테고리의 다른 글
안드로이드 여러해상도 지원, DIP 관련 (0) | 2020.09.19 |
---|---|
안드로이드 해상도 상관없이 나만의 대화상자 만들기 (0) | 2020.09.19 |
안드로이드 이미지 리소스 관련~ (0) | 2020.09.18 |
안드로이드 리스트 메모리 오버플로우, 개선 관련 (0) | 2020.09.18 |
안드로이드 Dialog창에 테두리 없애기, 투명도 주기,배경투명도, 꾸미기 관련 (AlertDialog, popup, Dialog 등등 (0) | 2020.09.18 |