Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
ProGraf
0 / 0 / 0
Регистрация: 27.06.2015
Сообщений: 96
#1

Максимальный width, height объекта view - Программирование Android

09.02.2016, 14:33. Просмотров 535. Ответов 26
Метки нет (Все метки)

Здравствуйте, уже все перепробовал, нужно: каким-нибудь способом определить, есть ли картинка на картинке, т.е находиться ли одна картинка на второй, хочу попробовать нахождении по координатам картинки, но нужно узнать ее максимальный width и height
Как я пробовал:
Java
1
2
3
4
5
6
7
ImageView ll = (ImageView)findViewById(R.id.IDla);
TextView text = (TextView)findViewById(R.id.IDtext);
 
H = ll.getHeight();
W = ll.getWidth();
 
text.setText(""+ Math.max(H, W) + " | "+Math.min(H, W));
Вывод 0 | 0
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2016, 14:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Максимальный width, height объекта view (Программирование Android):

Получить width и height картинки из ресурса - Программирование Android
Добрый день! Что то я уже запарился искать решение. А задача на вид элементарная: Есть cat - это id картинки из ресурса. Требуется...

В чем разница (View view) и (View v) - Программирование Android
Я только начинаю изучать программирование под андроид (до этого вобще программированием не занимался), по гуглу удалось найти только...

View вытесняет другое view из activity - Программирование Android
После второго EditText должна располагаться кнопка. Но почему-то этот второй EditText выпихивает ее из activity. Что не так?

Public void onClick(View view) - Программирование Android
Не работает public void onClick(View view) :wall: public class MainActivity extends AppCompatActivity implements View.OnClickListener...

WebView - Height - Программирование Android
Добрый вечер. Вот такая пробела. Когда я передаю информацию в WebView он почему выводится только на (height:10px;) и включает...

RecyclerView фиксированый height - Программирование Android
Мне кажется много кто встречался с данной проблемой. у меня есть корзина, в ней RecyclerView с фиксированой высотой. (что бы там 3...

26
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,733
09.02.2016, 15:58 #16
ProGraf, вы плохо читаете.
Вам же сказано, что надо сначала перейти к родительской группе. Вы разметку покажите для начала.
А то так получается, что im.findViewById(R.id.IDbt) - это как будто внутри изображения есть текст. Такое невозможно. Надо сначала перейти к лэйауту, содержащему оба компонента. Наверное, у вас какой-нибудь RelativeLayout. Или просто наберите что-то типа ViewGroup layout = im.getParent(); Затем уже можете адресоваться к элементам: layout.findViewById(R.id.IDbt); Но судя по тому, что я вижу, и это не поможет, т.к. они у вас адресуются прямо: (TextView)findViewById(R.id.IDt).
0
ProGraf
0 / 0 / 0
Регистрация: 27.06.2015
Сообщений: 96
09.02.2016, 15:59  [ТС] #17
Паблито,
Работа кода должна выглядить так: При нажатии на кнопку смещается картинка, условие: если эта картинка переместилась на кнопку то текст сверху в левом углу меняется на "+".
Xml:
XML
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
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
 
    <ImageView
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:src="@android:drawable/ic_delete"
        android:layout_centerHorizontal="true"
        android:id="@+id/IDim"/>
 
    <Button
        android:layout_height="wrap_content"
        android:text="Button"
        android:layout_width="wrap_content"
        android:layout_centerInParent="true"
        android:id="@+id/IDbt"
        android:onClick="tap"/>
 
    <TextView
        android:layout_height="wrap_content"
        android:text="Next?"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:layout_width="wrap_content"
        android:id="@+id/IDt"/>
 
</RelativeLayout>
Код Activity:

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
import android.app.*;
import android.os.*;
import android.view.*;
import android.widget.*;
 
public class MainActivity extends Activity 
{
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
    
    int cnt = 0;
    
    public void tap(View view){
    ImageView im = (ImageView)findViewById(R.id.IDim);
    Button but = (Button)findViewById(R.id.IDbt);
    TextView text = (TextView)findViewById(R.id.IDt);
    cnt += 5;
    im.setY(cnt);
        if(im.findViewById(R.id.IDbt) != null){
        text.setText("+");
        }
    }
}
0
Pablito
2580 / 2061 / 643
Регистрация: 12.05.2014
Сообщений: 7,233
Завершенные тесты: 1
09.02.2016, 16:03 #18
кошмар какой-то
findViewById ищет наличие элемента в разметке, а не пересечение одного с другим

как брать координаты вьюшек я отписал еще в самом начале
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,733
09.02.2016, 16:05 #19
ProGraf, и зачем этот концерт с определением компонентов? Продолжайте адресоваться, как и раньше, через findViewById. Уберите вообще im.findViewById.
Определяйте положение углов изображения. Просто в коде прибавляйте к левому краю изображения его ширину, таким образом получите правую границу изображения. Это всё надо повешать на событие щелчка по кнопке. Затем проверяйте, наехал рисунок на кнопку или нет.
0
ProGraf
0 / 0 / 0
Регистрация: 27.06.2015
Сообщений: 96
09.02.2016, 16:05  [ТС] #20
CoolMind, извините но я не могу понять ваш способ, я его щас гуглил, но не понимаю.
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,733
09.02.2016, 16:07 #21
ProGraf, так, забудьте про способы, которые вам указали до показа разметки (в 15:59). Просто по нажатию на кнопку проверяйте правый край рисунка и сравнивайте с левым краем кнопки. Если он больше или равен, то рисуйте плюс.
0
ProGraf
0 / 0 / 0
Регистрация: 27.06.2015
Сообщений: 96
09.02.2016, 16:28  [ТС] #22
Паблито, в этом и было проблема, я думал ваш способ сработает и мне не придется работать с координатами, но увы приходиться, я не могу понять как сделать чтобы была проверка по координатам всего изображение, а не верхнего левого угла, т.е мне нужно сделать полную проверку изображение если ход один пикс-координат задевает кнопку то действие.

Добавлено через 2 минуты
CoolMind, так у меня этого не получается, я уже все перепробовал, четкой информации,что картинка задела другой объект с любого радиуса "Низа, верха, справа, лева" не выходит.

Добавлено через 10 минут
CoolMind, так вы поможете?
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,733
09.02.2016, 16:31 #23
ProGraf, вы сделали обработчик onClick у кнопки?
Там прописали вычисление углов картинки?
Предположим, в момент нажатия уже известны ширина и высота (вычислили их в начале программы). Дальше просто прибавляете im.left + W, im.top + H и получаете координаты правого нижнего угла картинки (вместо left найдите нужный метод). Затем сравниваете с углами кнопки. Это одна из простых задач на пересечение прямоугольников.
0
ProGraf
0 / 0 / 0
Регистрация: 27.06.2015
Сообщений: 96
09.02.2016, 16:34  [ТС] #24
CoolMind,
Java
1
2
3
4
5
6
7
8
for(x = 0; x < im.getWidth(); x++)
    for(y = 0; y < im.getHeight(); y++)
    for(xx = 0; xx < but.getWidth(); xx++)
    for(yy = 0; yy < but.getHeight(); yy++)
    if((im.getX()+x)==(but.getX()+xx) && (im.getY()+y)==(but.getZ()+yy))
    {
    text.setText("+");
    }
Я бы хотел через for чтобы узнать каждый пиксель картинки и перечислить его, но все это привозит к вылету
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,733
09.02.2016, 16:41 #25
ProGraf, ого, это что-то новое. Вы просто нарисуйте на бумаге несколько вариантов расположения прямоугольников. Рядом, один в другом, с пересечением сторон. Потом определите, что вам нужно. Если нужно, чтобы хотя бы одна сторона была правее любой стороны кнопки, то это вообще просто. Для этого определите абсциссу правой стороны изображения. По-моему, это im.getRight(). Затем сравните с абсциссой левой стороны кнопки. Если первое больше или равно второго, то рисуйте плюс.
0
ProGraf
0 / 0 / 0
Регистрация: 27.06.2015
Сообщений: 96
09.02.2016, 16:43  [ТС] #26
CoolMind, пробую спасибо
0
Pablito
2580 / 2061 / 643
Регистрация: 12.05.2014
Сообщений: 7,233
Завершенные тесты: 1
09.02.2016, 16:51 #27
все проще, но ТС вртяли сделает это
Java
1
2
3
4
5
                Rect r1 = new Rect();
                Rect r2 = new Rect();
                view1.getDrawingRect(r1);
                view2.getDrawingRect(r2);
                boolean isIntersect = r1.intersect(r2);
0
09.02.2016, 16:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2016, 16:51
Привет! Вот еще темы с ответами:

Height i Width - C++ Builder
бла-бла-бла z=fgets(a,10000,f); бла-бла-бла if(z!=0) n+=1; Memo1-&gt;Height=((n*5)+(n*10)); ето я зделал автоматическое...

height width - HTML, CSS
Наверное глупый вопрос: Как задать размеры изображению которое стоит как фон сайта ? &lt;body background=&quot;Изображение&quot;&gt;

не работает width и height - HTML, CSS
Всем привет. Как заставить работать height и width? http://jsfiddle.net/0ka1y383/

padding в width и height - HTML, CSS
В общем-то пытаюсь тут создать свой первый шаблон и такая ситуация - поскольку контента нету, заполнял пустоту большим падингом, собственно...


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Опции темы

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