Подтвердить что ты не робот

Измените исходное изображение для просмотра изображения при нажатии

У меня есть прокрутка с большим количеством кнопок изображения. Я хочу изменить изображение для кнопки изображения при нажатии. Дело в том, что я хочу, чтобы изображение осталось до нажатия другой кнопки изображения. Поэтому я не мог использовать селектор. Какова наилучшая практика для его достижения?

С наилучшими пожеланиями

4b9b3361

Ответ 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.

Это трюк.