Форум программистов, компьютерный форум CyberForum.ru

Вывод случайного изображения - Android

Восстановить пароль Регистрация
 
gvsp
13 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 71
10.11.2015, 16:53     Вывод случайного изображения #1
Вроде тривиальная задача, но решения найти не могу. Нужно в активности выводить случайное изображение, выбирая из лежащих в drawable файлов i0...i40.

Для вывода текста в
XML
1
2
3
4
    <TextView
        android:id="@+id/VvodTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
Работает такой код:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
public class MainActivity extends AppCompatActivity {
 
    private TextView mHelloTextView;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        mHelloTextView = (TextView)findViewById(R.id.VvodTextView);
        mHelloTextView.setText("Hello!");
    }
}
А вот никак не могу найти аналогичного способа для ImageView заменять имя файла в android:src="@drawable/i27"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 1
10.11.2015, 16:59     Вывод случайного изображения #2
gvsp, самый простой и быстрый способ - создать массив ресурсов и брать из него случайный:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    private List<Integer> mImageResources = new ArrayList<>();
    private Random mRandom = new Random();
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        //Все то что уже было в onCreate
        
        mImageResources.add(R.drawable.i1);
        mImageResources.add(R.drawable.i2);
        mImageResources.add(R.drawable.i3);
        mImageResources.add(R.drawable.i4);
        //И так далее
    }
 
    public void setRandomImage(ImageView imageView){
        int randomResource = mRandom.nextInt(mImageResources.size());
        imageView.setImageResource(randomResource);
    }
gvsp
13 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 71
10.11.2015, 17:21  [ТС]     Вывод случайного изображения #3
setRandomImage серый и пишет метод setRandomImage (....) is never used.
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 1
10.11.2015, 17:22     Вывод случайного изображения #4
gvsp, ну его нужно вызвать, когда нужно будет поставить случайную картинку.
Java
1
setRandomImage(imageView);//imageView - это вьюшка на которую нужно картинку установить.
gvsp
13 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 71
10.11.2015, 17:35  [ТС]     Вывод случайного изображения #5
Что то не работает. И setRandomImage серый. Ошибок не выдаёт, но картинку не выводит. А если её в ImageView задать, то не меняет.
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
   ...
... />
 
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageView"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />
 
</RelativeLayout>
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package ...
...
 
public class MainActivity extends AppCompatActivity {
 
    private List<Integer> mImageResources = new ArrayList<>();
    private Random mRandom = new Random();
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        mImageResources.add(R.drawable.i1);
        mImageResources.add(R.drawable.i2);
        mImageResources.add(R.drawable.i3);
        mImageResources.add(R.drawable.i4);
    }
 
    public void setRandomImage(ImageView imageView){
        int randomResource = mRandom.nextInt(mImageResources.size());
        imageView.setImageResource(randomResource);
}
}
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 1
10.11.2015, 17:37     Вывод случайного изображения #6
gvsp, а где вызов метода то?
gvsp
13 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 71
10.11.2015, 17:51  [ТС]     Вывод случайного изображения #7
Что то туплю. А как мне его сразу вызвать при создании активности?

У меня и по кнопке не получается
Java
1
2
3
4
5
6
7
8
9
10
 ...
    public void setRandomImage(ImageView imageView){
        int randomResource = mRandom.nextInt(mImageResources.size());
        imageView.setImageResource(randomResource);
    }
    public void onClick(View view) {
        setRandomImage(imageView);
    }
 
}
imageView красный.
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 1
10.11.2015, 17:59     Вывод случайного изображения #8
gvsp, вам нужно почитать основы, без них никуда. Вот вы нашли в первом посте TextView методом findViewById, вот так же найдите теперь ImageView и можно будет вызвать метод setRandomImage в onCreate, чтобы картинка сразу применилась.
den_droid
6 / 7 / 1
Регистрация: 18.05.2015
Сообщений: 176
10.11.2015, 18:05     Вывод случайного изображения #9
Java
1
2
3
4
5
Random finishRandomR = new Random();
                        int finishRandom = finishRandomR.nextInt((8)+1);
if (finishRandom == 1) {
imageView.setImageResource(R.drawable.ui1);
}
Долго, да... Но как вариант. Также можно с switch.
Java
1
2
3
4
5
switch (finishRandom) {
case 1: imageView.setImageResource(R.drawable.ui1);
break;
case 2:...
}
Или:
Java
1
2
3
4
String[] ddImgs = {"R.drawable.i", "R.drawable.u"};
Random DDrandom = new Random ();
int DDpos = random.nexInt(ddImgs.length);
myImgView.setDrawableResource(ddImgs[DDpos]);
Может работать
Паблито
10.11.2015, 18:09
  #10

Не по теме:

я в соседней теме предлагал читать одной строкой массив из ресурсов, но ТС программирует наугад, поэтому не вариант

gvsp
13 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 71
10.11.2015, 18:17  [ТС]     Вывод случайного изображения #11
Spelcrawler, Спасибо. буду разбираться. Пока что то не заработало.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class MainActivity extends AppCompatActivity {
 
    private List<Integer> mImageResources = new ArrayList<>();
    private Random mRandom = new Random();
    private ImageView mRndView;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        mImageResources.add(R.drawable.i1);
        mImageResources.add(R.drawable.i2);
        mImageResources.add(R.drawable.i3);
 
        mRndView = (ImageView)findViewById(R.id.imageView);
        mRndView.setRandomImage(imageView);
    }
 
    public void setRandomImage(ImageView imageView){
        int randomResource = mRandom.nextInt(mImageResources.size());
        imageView.setImageResource(randomResource);
    }
 
}
den_droid
6 / 7 / 1
Регистрация: 18.05.2015
Сообщений: 176
10.11.2015, 18:56     Вывод случайного изображения #12
gvsp, вот, попробуйте последним способом: Вывод случайного изображения
gvsp
13 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 71
10.11.2015, 20:11  [ТС]     Вывод случайного изображения #13
den_droid, Боюсь, что там мне вообще ничего непонятно. Я только вникать в Яву начинаю. Да и с вниканием беда. В Интернете как то всё размазано. Надо в бумаге искать.

Добавлено через 1 час 5 минут
При нажатии на кнопку думает несколько секунд и вылетает из программы.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class MainActivity extends AppCompatActivity {
 
    private List<Integer> mImageResources = new ArrayList<>();
    private Random mRandom = new Random();
    private ImageView mRndView;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        mImageResources.add(R.drawable.i1);
        mImageResources.add(R.drawable.i2);
        mImageResources.add(R.drawable.i3);
        mImageResources.add(R.drawable.i4);
        mImageResources.add(R.drawable.i5);
        mImageResources.add(R.drawable.i6);
        mImageResources.add(R.drawable.i7);
        mImageResources.add(R.drawable.i8);
        
    }
 
    public void setRandomImage(ImageView imageView){
        int randomResource = mRandom.nextInt(mImageResources.size());
        imageView.setImageResource(randomResource);
    }
 
    public void onClick(View view) {
        mRndView = (ImageView)findViewById(R.id.imageView);
        setRandomImage(mRndView);
    }
}
DemD10
58 / 47 / 12
Регистрация: 03.09.2013
Сообщений: 424
10.11.2015, 23:55     Вывод случайного изображения #14
Я вот читаю пост, вам бы правда с основ начать, при чем основ по ява, а вот так с ходу лезть в андроид, вы только себе все обучение испортите. Да, на практике оно как-то всё быстрее, но что-то же знать нужно. Тем более в интернете полно курсов по ява и андроиду, да и книг хватает качественных, где-то была тема по литературе.
gvsp
13 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 71
13.11.2015, 16:58  [ТС]     Вывод случайного изображения #15
den_droid, А нельзя ли как то для сокращения кода обыграть то, что имена файлов отличаются только числом, если файлы с изображениями: i0, i1..? Например:

Java
1
2
String Imgs = "R.drawable.i" + RandomNumer;
myImgView.setDrawableResource(Imgs);
Или другой метод нужен? setImageResource с переменной работать не хочет.
bastrakov
91 / 91 / 14
Регистрация: 10.10.2015
Сообщений: 307
Записей в блоге: 1
13.11.2015, 21:32     Вывод случайного изображения #16
только что сделал именно это и выложил в гугл. :-)
код подарить?
https://play.google.com/store/apps/d...v.brainkickoff
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2015, 16:00     Вывод случайного изображения
Еще ссылки по теме:

Парсинг изображения с сайта Android
Увеличение изображения Android
Android Вращение изображения
Android Загрузка изображения
Вывод изображения после нажатия кнопки Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
gvsp
13 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 71
14.11.2015, 16:00  [ТС]     Вывод случайного изображения #17
Всем спасибо. И тем кто посмеялся, что я не знаю Яву и тем, кто честно попытался помочь, но дали длинный код. Всё получилось вот так просто:
Java
1
2
3
4
5
        int i = (int)(40 * Math.random() + 1);
        String Randow = "i" + i;
        ImageView imageview = (ImageView) findViewById(R.id.imageView);
        int resID = getResources().getIdentifier(Randow, "drawable", getApplicationContext().getPackageName());
        imageview.setImageResource(resID);
Yandex
Объявления
14.11.2015, 16:00     Вывод случайного изображения
Ответ Создать тему
Опции темы

Текущее время: 12:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru