Is there a way to add a pressed state to an ImageView? I have an image that i place a click listener on, and when I press it I want to change to imageview src for a second to mimic the pressed state of buttons or listview items.
Can I add a selector xml to the src attribute?
Figured it out. You CAN add a selector xml to your src attribute of an ImageView.
In my case, i created "addbuttonbg.xml" in my drawables:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_selected="false"
android:state_pressed="false"
android:drawable="#drawable/quickaddbutton" />
<item android:state_pressed="true"
android:drawable="#drawable/quickaddbutton_click" />
<item android:state_selected="true"
android:state_pressed="false"
android:drawable="#drawable/quickaddbutton" />
</selector>
Then set your imageview src to #drawable/addbuttonbg
Yes you can add a selector to get the press effect
Sample:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="#drawable/postbutton_press" android:state_pressed="true"/>
<item android:drawable="#drawable/postbutton_press" android:state_focused="true"/>
<item android:drawable="#drawable/postbutton_normal"/>
</selector>
To the ImageView's android:src="#drawable/post_btn_click" attribute or android:background="#drawable/post_btn_click" to a button attribute
post_btn_click -> selector drawable's file name
Related
I have developed an application that has one preferences activity for application setting so I want know about can we set custom graphics layout (XML) on preferences layout like CheckBox has own color Button while check and unchecked and list has own color if possible then how?
create XML in Drawable with button.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:state_pressed="false" android:drawable="#drawable/radio_on"/>
<item android:state_checked="false" android:state_pressed="false" android:drawable="#drawable/radio_off"/>
<item android:state_checked="true" android:state_pressed="true" android:drawable="#drawable/radio_on"/>
<item android:state_checked="false" android:state_pressed="true" android:drawable="#drawable/radio_off"/>
</selector>
radio_on
radio_off
Put both image in drawable folder radio_on.png and radio_off.png
Now at Your Radio Button Write This
android:button="#drawable/button"
custom_checkbox_layout.xml
<?xml version="1.0" encoding="UTF-8"?>
<CheckBox xmlns:android="http://schemas.android.com/apk/res/android"
android:id="#+android:id/checkbox" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:focusable="false"
android:clickable="false" android:button="#drawable/button"/>
After that in the CheckBoxPreference set android:widgetLayout="#layout/custom_checkbox_layout"
I have some Buttons on my android app. They have an icon and text. I can set the background color of a Button in java code. If the button is clicked I want to display with a different color. So, how do I set a different color for the pressed state of the Button?
<Button
android:id="#+id/save"
android:layout_width="130dip"
android:layout_height="wrap_content"
android:scaleType="center"
android:drawableTop="#drawable/save"
android:text="Save"
android:textColor="#FFFFFF"
android:textSize="14dip"
>
The onCreate method:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.homescreen);
save = (Button)findViewById(R.id.save);
save.setBackgroundColor(Color.rgb(27,161,226)); }
create xml file using the button image like this with mybutton.xml in drawable folder
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="#color/blue" />
<item android:state_focused="true" android:drawable="#color/gold" />
<item android:drawable="#color/grey" />
</selector>
and use this in button xml code
android:background="#drawable/mybutton"
add those color codes in the resource-->values-->colors.xml like this
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="blue">#0066cc</color>
<color name="gold">#e6b121</color>
<color name="grey">#cccccc</color>
</resources>
Reference : Change button background on touch
Below is the sample code for color state list used for a button
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:color="#c0c0c0"
android:state_selected="true"/>
<item
android:color="#ffffff"
android:state_pressed="true"/>
<item
android:color="#9A9A9A"
android:state_focused="false"
android:state_pressed="false"
android:state_selected="false"/>
</selector>
Also please check below link for color state list
http://developer.android.com/guide/topics/resources/color-list-resource.html
Use a StateList. Below is an example of a selector with a different drawable for the pressed state:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="#drawable/drawable_for_pressed_state" android:state_pressed="true"/>
<item android:drawable="#drawable/drawable_for_normal_state"/>
</selector>
You need to use a drawable with selector for pressed states, more commonly done in xml links below.
http://developer.android.com/reference/android/graphics/drawable/StateListDrawable.html
http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList
edittext_modified_states.xml
<?xml version="1.0" encoding="UTF-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:state_pressed="false" android:drawable="#drawable/apptheme_textfield_activated_holo_light" />
<item android:state_focused="true" android:state_pressed="true" android:drawable="#drawable/apptheme_textfield_focused_holo_light" />
<item android:state_focused="false" android:state_pressed="true" android:drawable="#drawable/apptheme_textfield_disabled_focused_holo_light"/>
<item android:drawable="#drawable/apptheme_textfield_default_holo_light" />
</selector>
here: http://android-holo-colors.com goto this website and select your color and imort into your drawable. goto layout xml and set button background. android:background="#drawable/edittext_modified_states"
If you want to change button background color then just do as follow..
#Override
public void onClick(View v) {
if(v.getId() == R.id.btn01) {
btn1.setBackgroundColor(Color.RED);
btn1.setTextColor(Color.WHITE);
}
just add this code in onclick event of button.
I'm using Eclipse to write the android application. I've added some standard buttons from the Form Widgets tab and successfully got them opening new windows which display additional buttons.
I would like the button that was pressed, to change appearance and continue to look pressed in after it is selected.
create xml file using the button image like this
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:drawable="#color/transparent" />
<item
android:drawable="#drawable/closebutton" />
</selector>
add the color folder in values
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="transparent">#00000000</color>
</resources>
can use selector
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true"
android:state_pressed="false"
android:drawable="#drawable/button_settings" />
<item android:state_focused="true"
android:state_pressed="true"
android:drawable="#drawable/button_settings" />
<item android:state_focused="false"
android:state_pressed="true"
android:drawable="#drawable/button_settings_selected" />
<item android:drawable="#drawable/button_settings" />
</selector>
now set this drawable on background property of button in XML, now in coding take a boolean flag when button is pressed set the flag and set the bacground of the button(selected image) and on again click reset flag value and change the imageBackground to the selector again, thats it!!!
Use ImageButton and change the background of the button.
you can use this kind of images depends of you need. Like this https://web.archive.org/web/20160429124711/http://www.devahead.com/blog/2011/08/creating-a-custom-android-button-with-a-resizable-skin/
I have created image buttons instead of normal buttons.On click on the image button I want a click effect as in the normal icon click effect(On click of menu the background of the icon will be yellow color) of android phones.Using the following code I code show an image on click of the image button .What changes I have to make further.
<item android:state_enabled="true"
android:state_pressed="true"
android:drawable="#drawable/production_order" />
android:state_enabled="false"
android:drawable="#drawable/prodution_orders_icon" />
Try this code
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:drawable="#drawable/camera" />
<item android:state_pressed="false" android:drawable="#drawable/camera" />
<item android:state_pressed="true" android:drawable="#drawable/camera_active" />
</selector>
Instead of using directly ImageButton you can use Button with customized background
Here is the sample tutorial.
create xml file using the button image like this
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:drawable="#color/transparent" />
<item
android:drawable="#drawable/closebutton" />
</selector>
add the color folder in values
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="yellow">#ffffff00</color>
</resources>
Is there a way to highlight an ImageButton when it's pressed?
You can define a drawable via XML and use the selector, like below, to use different (i.e. highlighted) images for different button states:
i.e. res/drawable/button.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="#drawable/bg_catlocfilter" android:state_pressed="false" />
<item android:drawable="#drawable/bg_catlocfilter_dark" android:state_pressed="true" />
<item android:drawable="#drawable/bg_catlocfilter" android:state_focused="false" />
<item android:drawable="#drawable/bg_catlocfilter_dark" android:state_focused="true" />
</selector>
Use this resource then for the ImageButton view.