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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
gvsp
13 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 71
#1

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

10.11.2015, 16:53. Просмотров 618. Ответов 16
Метки нет (Все метки)

Вроде тривиальная задача, но решения найти не могу. Нужно в активности выводить случайное изображение, выбирая из лежащих в 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"
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.11.2015, 16:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывод случайного изображения (Программирование Android):

Вывод изображения из массива байт - Программирование Android
получаю по сокету массив байт (считанное jpg-изображение). Как и на что его можно вывести? спасибо.

Вывод изображения после нажатия кнопки - Программирование Android
Можно ли вывести изображение на главный layout, после нажатия кнопки, которая расположена на нём? По нажатию первой кнопки должно...

Вывод случайного изображения - PHP
День добрый. Есть у меня скрипт вывода случайного изображения, изображение берет из папки, все проверял, работает (писал не сам...

Вывод случайного изображения - JavaScript
Нашел вот такой скрипт: var a=Math.round(Math.random()*10) image = new Array(); ...

Вывод случайного изображения из папки Images - JavaScript
Привести пример программного кода на JavaScript, который выводит случайное изображение из папки Images, содержащей изображения 1.jpg,...

Генерация случайного изображения - JavaScript
Стоит довольно любопытная задача: нужно генерировать допустим квадрат 500х500 состоящий из пикселей случайного цвета. С генерацией цветов...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 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
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 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
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 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
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
10.11.2015, 17:59 #8
gvsp, вам нужно почитать основы, без них никуда. Вот вы нашли в первом посте TextView методом findViewById, вот так же найдите теперь ImageView и можно будет вызвать метод setRandomImage в onCreate, чтобы картинка сразу применилась.
den_droid
6 / 7 / 1
Регистрация: 18.05.2015
Сообщений: 190
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]);
Может работать
Pablito
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
Сообщений: 190
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
Сообщений: 438
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 с переменной работать не хочет.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.11.2015, 16:58
Привет! Вот еще темы с ответами:

Показ случайного изображения из ресурсов - Visual Basic .NET
Кто знает как реализовать показ картинки из ресов случайной в picturebox?

Скрипт вывода случайного изображения - JavaScript
Доброго времени суток. Собственно есть скрипт: &lt;script language=&quot;JavaScript&quot;&gt; &lt;!-- var a=Math.round(Math.random()*4) image = new...

Поиск на диске случайного изображения - C++ WinAPI
Всем привет, как можно сделать так, чтобы осуществлялся поиск на диске случайного изображения формата .jpeg (имя файла не важно) и...

Выбор случайного изображения для новой заявки - AnyLogic
Новичок в AnyLogic, поэтому извиняюсь заранее, если тупой вопрос задаю. Проблема вот в чем: мне нужно для каждой новой заявки выбирать...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.11.2015, 16:58
Ответ Создать тему
Опции темы

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