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

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

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

Как сделать границы в пространстве ImageView при прокрутке изображения - Программирование Android

24.12.2015, 23:07. Просмотров 253. Ответов 1
Метки нет (Все метки)

Как сделать границы в пространстве ImageView при прокрутке большого изображения


XML
1
2
3
4
5
6
7
8
9
10
11
12
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/img"
        android:background="#fff"
        android:src="@drawable/photo"
        android:scaleType="matrix"
        android:layout_alignWithParentIfMissing="false"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentBottom="true"
        android:layout_alignParentTop="true" />
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
33
34
35
36
37
38
39
40
41
42
43
44
45
import android.os.Bundle;
import android.view.MotionEvent;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ImageView;
 
public class MainActivity extends AppCompatActivity {
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        setContentView(R.layout.activity_main);
        
        final ImageView switcherView = (ImageView) this.findViewById(R.id.img);
 
        switcherView.setOnTouchListener(new View.OnTouchListener() {
            float mx, my;
 
            public boolean onTouch(View arg0, MotionEvent event) {
                float curX, curY;
                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        mx = event.getX();
                        my = event.getY();
                        break;
                    case MotionEvent.ACTION_MOVE:
                        curX = event.getX();
                        curY = event.getY();
                        switcherView.scrollBy((int) (mx - curX), (int) (my - curY));
                        mx = curX;
                        my = curY;
                        break;
                    case MotionEvent.ACTION_UP:
                        curX = event.getX();
                        curY = event.getY();
                        switcherView.scrollBy((int) (mx - curX), (int) (my - curY));
                        break;
                }
 
                return true;
            }
        });
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.12.2015, 23:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как сделать границы в пространстве ImageView при прокрутке изображения (Программирование Android):

ListView: сбивается содержимое ImageView элемента при скроллинге + как сделать выделение пункта списка при нажатии? - Программирование Android
1. Есть свой класс ContactsSimpleCursorAdapter, в методе public void bindView(View view, Context context, Cursor c) которого происходит...

Смещается изображение за границы ImageView - Программирование Android
Моя головная боль - это рисование лайаутов. В очередной раз встал в ступор... Почему изображение из ImageView выходит за рамки самого...

При прокрутке listview изображения подгружаются, но происходит "скачок" списка - Программирование Android
Здравствуйте. Использую listview и item с текстом и изображениями. При прокрутке listview изображения подгружаются, но происходит...

Как сделать столкновение ImageView (игра гонки) - Программирование Android
Как сделать столкновение ImageView ? У меня есть 3 машины, одна на месте стоит, я ее перемещаю влево и вправо , а другие сверху вниз едут,...

Увеличение изображения в ImageView - Программирование Android
Необходимо увеличить изображение, которое в ImageView (просмотр через ViewPager). Делаю так: int width = bitmap.getWidth() ; ...

Загрузка изображения в imageview - Программирование Android
Всем привет. Возникла проблема, распарсил сайт в arraylist, сохранил в БД, далее мне нужно вывести сайт на активность. Делаю так: ...

1
tonymontana
0 / 0 / 0
Регистрация: 08.03.2013
Сообщений: 29
28.12.2015, 19:14  [ТС] #2
Всё равно выходит за границы
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
import android.os.Bundle;
import android.view.MotionEvent;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ImageView;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
 
public class MainActivity extends AppCompatActivity {
 
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
 
        setContentView(R.layout.activity_main);
 
 
        Resources res=getResources();
        final Bitmap mBitmap = BitmapFactory.decodeResource(res, R.drawable.photo);
        BitmapDrawable bDrawable = new BitmapDrawable(res, mBitmap);
 
        int bitmapWidth = bDrawable.getIntrinsicWidth();
        int bitmapHeight = bDrawable.getIntrinsicHeight();
        @SuppressWarnings("deprecation")
        int screenWidth = this.getWindowManager().getDefaultDisplay().getWidth();
        @SuppressWarnings("deprecation")
        int screenHeight = this.getWindowManager().getDefaultDisplay().getHeight();
 
 
 
        final ImageView switcherView = (ImageView) this.findViewById(R.id.img);
 
 
        int maxX = (int)((bitmapWidth / 2) - (screenWidth / 2));
        int maxY = (int)((bitmapHeight / 2) - (screenHeight / 2));
 
        final int maxLeft = (maxX * -1);
        final int maxRight = maxX;
        final int maxTop = (maxY * -1);
        final int maxBottom = maxY;
 
       
        switcherView.setOnTouchListener(new View.OnTouchListener()
        {
            float downX, downY;
            int totalX, totalY;
            int scrollByX, scrollByY;
            public boolean onTouch(View view, MotionEvent event)
            {
                float currentX, currentY;
                switch (event.getAction())
                {
                    case MotionEvent.ACTION_DOWN:
                        downX = event.getX();
                        downY = event.getY();
                        break;
 
                    case MotionEvent.ACTION_MOVE:
                        currentX = event.getX();
                        currentY = event.getY();
                        scrollByX = (int)(downX - currentX);
                        scrollByY = (int)(downY - currentY);
 
                        if (currentX > downX)
                        {
                            if (totalX == maxLeft)
                            {
                                scrollByX = 0;
                            }
                            if (totalX > maxLeft)
                            {
                                totalX = totalX + scrollByX;
                            }
                            if (totalX < maxLeft)
                            {
                                scrollByX = maxLeft - (totalX - scrollByX);
                                totalX = maxLeft;
                            }
                        }
 
                 
                        if (currentX < downX)
                        {
                            if (totalX == maxRight)
                            {
                                scrollByX = 0;
                            }
                            if (totalX < maxRight)
                            {
                                totalX = totalX + scrollByX;
                            }
                            if (totalX > maxRight)
                            {
                                scrollByX = maxRight - (totalX - scrollByX);
                                totalX = maxRight;
                            }
                        }
 
 
                        if (currentY > downY)
                        {
                            if (totalY == maxTop)
                            {
                                scrollByY = 0;
                            }
                            if (totalY > maxTop)
                            {
                                totalY = totalY + scrollByY;
                            }
                            if (totalY < maxTop)
                            {
                                scrollByY = maxTop - (totalY - scrollByY);
                                totalY = maxTop;
                            }
                        }
 
        
                        if (currentY < downY)
                        {
                            if (totalY == maxBottom)
                            {
                                scrollByY = 0;
                            }
                            if (totalY < maxBottom)
                            {
                                totalY = totalY + scrollByY;
                            }
                            if (totalY > maxBottom)
                            {
                                scrollByY = maxBottom - (totalY - scrollByY);
                                totalY = maxBottom;
                            }
                        }
 
                        switcherView.scrollBy(scrollByX, scrollByY);
                        downX = currentX;
                        downY = currentY;
                        break;
 
                }
 
                return true;
            }
        });
    }
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.12.2015, 19:14
Привет! Вот еще темы с ответами:

Замена изображения в imageview по нажатию - Программирование Android
Всем привет! Такой вопрос: Нажимаю на imagevie и хочу что бы менялось изображение. Имеется 3 лаяута в которых есть такой код: ...

Загрузка изображения из интернета в imageview - Программирование Android
Доброго, передаю из одной активити в другую ссылку на картинку, она прямая, как мне ее вывести в imageview?

Изображения в прокрутке (ScrolView) - Программирование Android
Необходимо загрузить изображения из интернета и вывести их в горизонтальном виде в ScrolView. Может есть простой пример, который это...

Gradient или как сделать теневые границы у кнопки - Программирование Android
Привет всем, я создаю тестовое приложение под Android и у меня образовался вопрос по дизайну: как сделать границу-тень у кнопки,такую как в...


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

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

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