Получать background/fondo изображения dinámicamente

Я начинаю работать с ImageView и мне хотелось бы знать, как обмениваться фондами между ними dinámicamete. Давайте предполагать, что у меня есть два ImageView:

1) ImageView puesto_1_foto_1 = (ImageView) findViewById(R.id.puesto_1_foto_1);

2) ImageView mi_puesto_foto_1 = (ImageView) findViewById(R.id.mipuesto_foto_1);

То, что он хотел бы сделать, предзагружено однажды через java, соглашаться на само изображение, что выражения ImageView они имеют определенные как background, чтобы так помещать его другой одного, и с другой до первого.

Я попробую объяснять это с изображением: introducir la descripción de la imagen aquí

1
задан 06.08.2017, 20:16
0 ответов

Как достижение изображения background/fondo одного ImageView dinámicamente.

Существует какой-то способ получать имя background каждого TextView. Например, если первый считает background, названный через drawable так называемым "fondo1": существует какой-то способ соглашаться на это имя?

То, что ты реализовал бы, состоит в том, чтобы соглашаться на id нагруженного изображения определяя имя в tag:

<ImageView
    android:id="@+id/puesto_1_foto_1" 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"    
    android:background="@drawable/fondo1"
    android:tag="fondo1"/>

Получив ссылку ImageView

ImageView puesto_1_foto_1 = (ImageView) findViewById(R.id.puesto_1_foto_1);

ты можешь получать Ваш пойдите посредством Вашего tag:

//obtiene el tag del ImageView.
String backgroundImage1 = String.valueOf(imageView1.getTag());
//obtiene id mediante el método getIdentifier().
int resourceId = getResources().getIdentifier(backgroundImage1, "drawable", getPackageName());

этот пойдите это тот, которого ты использовал бы, чтобы загружать изображение в другом ImageView:

//convierte el id a Drawable
Drawable myDrawable = getResources().getDrawable(resourceId);
//Asigna el Drawable al ImageView.
imageView2.setImageDrawable(myDrawable);

Пример:

Согласно следующему layout мы добавляем 2 ImageView к, которые мы хотим обменяться Вашими изображениями, для этого в tag, добавляем имя изображения ("android" и "robotito"):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:id="@+id/my_layout"
    android:orientation="vertical">

     <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/android"
        android:tag="android"/>


    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/robotito"
        android:tag="robotito"/>

</LinearLayout>

introducir la descripción de la imagen aquí

Чтобы обмениваться изображениями мы нуждаемся в том, чтобы получить id ресурса, загруженного в каждом ImageView, сначала получаем имя ресурса и позже Ваш пойдите, для этого мы используем метод getIdentifier ():

 ImageView imageView1 = (ImageView) findViewById(R.id.imageView1);
 //Obtiene nombre de imagen mediante el tag.
 String backgroundImage1 = String.valueOf(imageView1.getTag());

 ImageView imageView2 = (ImageView) findViewById(R.id.imageView2);
 //Obtiene nombre de imagen mediante el tag.
 String backgroundImage2 = String.valueOf(imageView2.getTag());

  //Obtiene id de imagen cargada en ImageView1
  //backgroundImage1 en este punto tiene el valor de "android".
  int resourceId = getResources().getIdentifier(backgroundImage1, "drawable", getPackageName());
  //Obtiene id de imagen cargada en ImageView2
  //backgroundImage1 en este punto tiene el valor de "robotito".
  int resourceId2 = getResources().getIdentifier(backgroundImage2, "drawable", getPackageName());

получив они пойдите мы получаем Drawable начиная с id:

  //convierte el id de imagen cargada en ImageView1 a Drawable.
  Drawable myDrawable1 = getResources().getDrawable(resourceId);
  //convierte el id de imagen cargada en ImageView2 a Drawable.
  Drawable myDrawable2 = getResources().getDrawable(resourceId2);

сейчас мы можем обмениваться изображениями:

   //Asigna imagen de ImageView2 a ImageView1.
   imageView1.setImageDrawable(myDrawable2);

   //Asigna imagen de ImageView1 a ImageView2.
   imageView2.setImageDrawable(myDrawable1);

чтобы получать следующий результат:

introducir la descripción de la imagen aquí

Имея id ресурса в системе мы можем загружать dinamicamente другое изображение,

imageView1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
     //Carga imagen de ImageView2 a ImageView1
     imageView1.setImageDrawable(myDrawable2);
}
});
imageView2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
     //Carga imagen de ImageView1 a ImageView2
     imageView2.setImageDrawable(myDrawable1);
}
});
1
ответ дан 03.12.2019, 17:35
  • 1
    ¡ Большое спасибо! Очень выработанный ответ :) –  23.01.2017, 22:10
  • 2
    Что хорошо ждал, тебе было полезно, привет! б • ¦/Н - ‿ Нќ-\б • Ґ –  23.01.2017, 22:11

Ты должен программировать событие, которое освобождало бы изменение, обычно он используется on clicklistener а именно, всякий раз когда ты кликнул в imageView, ты можешь менять это следующего способа:

puesto_1_foto_1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
    puesto_1_foto_1.setImageResource("Aqui va la el fondo dos");
}
});

И ты делаешь что-то сходно для imageview два:

puesto_2_foto_2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
    puesto_2_foto_2.setImageResource("Aqui va la el fondo uno"); 
}
});
0
ответ дан 03.12.2019, 17:35
  • 1
    Если. Это sé. То, что я спрашиваю, если существует какой-то способ получать имя background каждого TextView. Например, если первый считает background названным в travé s так называемого drawable " fondo1" ¿ существует какой-то способ соглашаться на это имя? –  22.01.2017, 04:05

Теги

Похожие вопросы