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

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

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

Скроллинг увеличенного изображения - Программирование Android

29.05.2013, 10:21. Просмотров 539. Ответов 0
Метки нет (Все метки)

Необходимо сделать скроллинг увеличенного изображения. Делал по данному примеру https://sites.google.com/site/androi...ble-image-view, добавив только увеличение. Изображение увеличивается, но скроллинг не работает!

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
public class ScrollImageView extends View {
    private final int DEFAULT_PADDING = 10;
    private Display mDisplay;
    private Bitmap mImage;
 
    /* Current x and y of the touch */
    private float mCurrentX = 0;
    private float mCurrentY = 0;
 
    private float mTotalX = 0;
    private float mTotalY = 0;
    /* The touch distance change from the current touch */
    private float mDeltaX = 0;
    private float mDeltaY = 0;
 
    private float scaleFactor = 2.0f;
 
    int mDisplayWidth;
    int mDisplayHeight;
    int mPadding;
 
public ScrollImageView(Context context, int widthD, int heightD) {
    super(context);
    this.mDisplayWidth = widthD ;
    this.mDisplayHeight =heightD ;
    initScrollImageView(context);
    this.mImage = BitmapFactory.decodeResource(getResources(), R.drawable.img) ;
}
public ScrollImageView(Context context, AttributeSet attributeSet) {
    super(context);
    initScrollImageView(context);
}
 
private void initScrollImageView(Context context) {
    mDisplay = ((WindowManager)context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
    mPadding = DEFAULT_PADDING;
}
 
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    int width = this.mDisplayWidth ;
    int height = this.mDisplayHeight ;
    setMeasuredDimension(width, height);
}
 
private int measureDim(int measureSpec, int size) {
        int result = 0;
        int specMode = MeasureSpec.getMode(measureSpec);
        int specSize = MeasureSpec.getSize(measureSpec);
 
        if (specMode == MeasureSpec.EXACTLY) {
            result = specSize;
        } else {
            result = size;
            if (specMode == MeasureSpec.AT_MOST) {
               result = Math.min(result, specSize);
            }
        }
        return result;
    }
 
public Bitmap getImage() {
    return mImage;
}
 
public void setImage(Bitmap image) {
    mImage = image;
}
 
public int getPadding() {
    return mPadding;
}
 
public void setPadding(int padding) {
    this.mPadding = padding;
}
 
@Override
public boolean onTouchEvent(MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
        mCurrentX = event.getRawX();
        mCurrentY = event.getRawY();
    } 
    else if (event.getAction() == MotionEvent.ACTION_MOVE) {
        float x = event.getRawX();
        float y = event.getRawY();
 
        // Update how much the touch moved
        mDeltaX = x - mCurrentX;
        mDeltaY = y - mCurrentY;
 
        mCurrentX = x;
        mCurrentY = y;
 
        invalidate();
    }
    // Consume event
    return true;
}
 
@Override
protected void onDraw(Canvas canvas) {
    if (mImage == null) {
        return;
}
 
    float newTotalX = mTotalX + mDeltaX;
    // Don't scroll off the left or right edges of the bitmap.
    if (mPadding > newTotalX && newTotalX > getMeasuredWidth() - mImage.getWidth() - mPadding)
        mTotalX += mDeltaX;
 
    float newTotalY = mTotalY + mDeltaY;
    // Don't scroll off the top or bottom edges of the bitmap.
    if (mPadding > newTotalY && newTotalY > getMeasuredHeight() - mImage.getHeight() - mPadding)
        mTotalY += mDeltaY;
 
    Paint paint = new Paint();
    canvas.scale(scaleFactor, scaleFactor);
    canvas.drawBitmap(mImage, mTotalX, mTotalY, paint);
}
}
Где ошибка может быть? И зачем в этом примере метод measureDim() если он не используется?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2013, 10:21     Скроллинг увеличенного изображения
Посмотрите здесь:

Скроллинг форм - Программирование Android
Ребят, честно только начал разбираться с программированием. Вот вообще не знаю как сформулировать вопрос (потому что не знаю как...

ListView и горизонтальный скроллинг - Программирование Android
Имеется кастомный ListView, у которого TextView не переносит текст на следующую строку, (android:singleLine="true"). Т.е. ListView может...

Скроллинг внутри layout в 2х направлениях - Программирование Android
Нужно реализовать скроллинг как по вертикали, так и по горизонтали, но layout, который должен перемещаться внутри другого, просто...

Как сделать скроллинг FrameLayout? - Программирование Android
как сделать скроллинг FrameLayout? Суть в том, что содержимое не помещается на экране по вертикали. В FrameLayout вставлено около 20...

Неправильно отображение увеличенного изображения в virturmart 2.x - Joomla
Сегодня столкнулся с проблемой правильного отображения изоброжения товара при нажатие на него. По умолчанию оно всегда увеличивалось, а...

Скроллинг изображения - C++
Как организовать скроллинг изображения BITMAP при нажатии клавиш-стрелок или при достижении курсорoм краёв екрана?

Запись в БД времени увеличенного на день! - PHP БД
Добрый день.Есть задача,необходимо в поле в базе (тип datetime) записать текущее серверное время увеличенное на 1 день! Спасибо!

скроллинг - ActionScript
делаю скрол по уроку, если создавать новый проект и копипастить код то все работает, в свой проект пытаюсь прикрутить - ничего не выводит....

Скроллинг - Windows XP
После зажимания полосы прокрутки, полоса продолжает двигаться по движению мыши. Для того чтобы это отменить необходимо нажать левую кнопку...

Скроллинг - C (СИ)
Как реализовать на си, что-то типа скролинга. У меня есть программа, которая выводит данные ввиде таблицы, но когда информации много...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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