Измените исходное изображение для просмотра изображения при нажатии
У меня есть прокрутка с большим количеством кнопок изображения. Я хочу изменить изображение для кнопки изображения при нажатии. Дело в том, что я хочу, чтобы изображение осталось до нажатия другой кнопки изображения. Поэтому я не мог использовать селектор. Какова наилучшая практика для его достижения?
С наилучшими пожеланиями
Ответы
Ответ 1
Вы хотите сделать это.
ImageButton Demo_button = (ImageButton)findViewById(R.id.firstimage);
// when you click this demo button
Demo_button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Demo_button.setImageResource(R.drawable.secondimage);
}
}
Попробуйте это. (обновленный набор настроек для установки)
Ответ 2
Лучшее решение, используйте следующий xml в качестве источника изображения:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_activated="true">
<bitmap android:src="@drawable/image_selected"/>
</item>
<item>
<bitmap android:src="@drawable/image_not_selected"/>
</item>
</selector>
@Override
public void onClick(View v) {
v.setActivated(!v.isActivated());
}
Ответ 3
не забудьте создать поле "fun"
Попробуйте это для изменения изображения. При нажатии imageview
Like_btn.setOnClickListener(new OnClickListener()
{
**private boolean fun = true;**
public void onClick(View v)
{
if(fun)
{
Like_btn.setImageResource(R.drawable.unlike);
fun=false;
}
else
{
fun=true;
Like_btn.setImageResource(R.drawable.like);
Toast.makeText(getApplicationContext(), "Changed", Toast.LENGTH_LONG).show();
}
}
});
Ответ 4
ImageButton Demo_button = (ImageButton)findViewById(R.id.firstimage);
ImageButton second_button = (ImageButton)findViewById(R.id.secondimage);
// when you click this demo button
Demo_button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Demo_button.setImageResource(R.drawable.secondimage);
second_button.setImageResource(R.drawable.firstimage);
}
}
second_button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Demo_button.setImageResource(R.drawable.firstimage);
second_button.setImageResource(R.drawable.secondimage);
}
}
Надеюсь, тебе захочется
Право???
Ответ 5
попробуйте под кодом: -
boolean flag=false;
ImageButton btn = (ImageButton)findViewById(R.id.btn);
// when you click this demo button
btn .setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (!flag) {
btn.setBackgroundResource(R.drawable.imageonpress);
flag=true;
}
else {
btn.setBackgroundResource(R.drawable.image);
flag=false;
}
}
}
Ответ 6
Что для меня работало:
Я создал новый гибкий XML файл, например, image_state.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<bitmap android:src="@drawable/image_pressed"/>
</item>
<item>
<bitmap android:src="@drawable/image"/>
</item>
</selector>
И в моем файле макета я установил src образа imageView как:
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/image_state"/>
Ответ 7
OnTouchListener намного лучше для того, что вам нужно сделать:
myImageButton.setOnTouchListener(new OnTouchListener(){
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction())
{
case MotionEvent.ACTION_DOWN :
myImageButton.setImageResource(R.drawable.image_when_pressed);
break;
case MotionEvent.ACTION_UP :
myImageButton.setImageResource(R.drawable.image_when_released);
break;
}
return false;
}
});
Ответ 8
float alpha_first = 0.2f;
float alpha_second = 1.0f;
AlphaAnimation alphadp = new AlphaAnimation(alpha_second, alpha_first);
switch (v.getId()) {
case R.id.disable_deactivate_pic:
ImageButton disable_button =(ImageButton)findViewById(R.id.disable_deactivate_pic);
if (!flag) {
disable_button.setImageResource(R.drawable.enable_active);
linearLayout_for_picture = (LinearLayout) findViewById(R.id.linearlayout_imageView_pic);
alphadp.setFillAfter(true);
linearLayout_for_picture.startAnimation(alphadp);
flag=true;
}
else {
disable_button.setImageResource(R.drawable.disable_active);
alphadp.setFillAfter(false);
linearLayout_for_picture.startAnimation(alphadp);
flag=false;
}
break;
Ответ 9
Это, по-видимому, самый короткий способ его достижения и требует только XML, никакого кода Java:
Сохраните файл как drawable/image_pressable.xml рядом с двумя изображениями:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/image_pressed" android:state_pressed="true" />
<item android:drawable="@drawable/image_regular" />
</selector>
то ссылайтесь на него как:
<ImageView android:src="@drawable/image_pressable" />
Ответ 10
Если вы сохраните выделение по клику, а затем перезагрузите галерею прокрутки изображения (или меню прокрутки), а затем перезагрузите и выделите выделение с замененным изображением, вы можете это сделать. Насколько я знаю, ни одна из встроенных функций галереи или меню не имеет возможности заменять изображения после их загрузки и отображения.
Ответ 11
Для достижения этой цели вы можете использовать StateListDrawable
. Этот метод также работает для ImageButton
s. Я предпочитаю устанавливать дополнительные слушатели.
Я также скомпилировал класс дополнительных помощников: http://alexanderwong.me/post/40799636705/android-change-background-image-drawable-on-press
public static StateListDrawable makeStateDrawable(Drawable drawable, Drawable pressedDrawable, Drawable disabledDrawable) {
boolean set = false;
StateListDrawable stateDrawable = new StateListDrawable();
if (disabledDrawable != null) {
set = true;
stateDrawable.addState(new int[] { -android.R.attr.state_enabled }, disabledDrawable);
}
if (pressedDrawable != null) {
set = true;
stateDrawable.addState(new int[] { android.R.attr.state_pressed }, pressedDrawable);
}
if (drawable != null) {
set = true;
stateDrawable.addState(new int[0], drawable);
}
return set ? stateDrawable : null;
}
Ответ 12
если у вас есть ImageView
или ImageButton
и вы хотите изменить изображение этого при нажатии, вы можете обновить активность для любого нажатого:
fav.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int isFavor = c.getInt(c.getColumnIndex("isFavor"));
if(isFavor == 1){
db.execSQL("update content set isFavor=0 where ID="+idxx+";");
fav.setImageResource(R.drawable.favnot_ic);
Toast.makeText(context.getApplicationContext(),"item cleaned",Toast.LENGTH_LONG).show();
activity.finish();
activity.overridePendingTransition(0, 0);
context.startActivity(activity.getIntent());
}
else{
db.execSQL("update content set isFavor=1 where ID=" + idxx + ";");
fav.setImageResource(R.drawable.fav_ic);
Toast.makeText(context.getApplicationContext(),"Item added...",Toast.LENGTH_LONG).show();
activity.finish();
activity.overridePendingTransition(0, 0);
context.startActivity(activity.getIntent());
}
}
});
Ответ 13
если у у вас уже есть кнопка в приложении ur, которая будет делать обмен между двумя фотографиями, которые у вас есть, когда их щелкнул, тогда есть простой код: D
//для добавления изображений в android мы просто "скопируем их из своего местоположения и в прошлом (res → drawable)"
//затем перетащите "ImageView" и выберите изображение, которое хотите отобразить
//u может настроить масштабирование масштаба "scaleType, layout_Width и layout_Height"
public boolean swap = true;
public void change(View view)
{
ImageView i = (ImageView) findViewById(R.id.img);
if (swap)
{
i.setImageResource(R.drawable.images);
swap=false;
}
else
{
swap=true;
i.setImageResource(R.drawable.couple);
}
}
Ответ 14
Demo_button.setImageResource(R.drawable.secondimage)
//Demo_button is your event holder (the button or imageview or bitmap file which contains the image) and secondimage is your image (drawable) file, without any complications.
Это трюк.