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

Показ невидимой части картинки анимацией - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android AutoUpdate Widget http://www.cyberforum.ru/android-dev/thread1546669.html
Доброго времени суток! Подскажите пожалуйста, как сделать сервис..который будет делать обновление информации моего виджета 1раз в сутки (В заданное время).. Подскажите, как это сделать
Android Google map как отключить анимацию камеры Всем привет. собственно вопрос думаю понятен, как отключить анимацию перемещения к нужному маркеру, чтобы камера сразу же показывал нужный маркер с нужным зумом? http://www.cyberforum.ru/android-dev/thread1546666.html
Обновление списка при выходе из DialogFragment Android
Есть ViewPager на каждой его странице список, долгий клик на item списка вызывает DialogFragment для редактирования названия item'а, по кнопке Сохранить в диалоге происходит следующее: case R.id.button1: String name = textPath.getText().toString(); id_col=SecondFragment.id_col; db.updRec2(id_col, name); //cursor.requery(); ...
Android Высокопроизводительные таблицы для отображение большого количетсва данных
Доброго времени суток. Честно говоря, не думал, что буду писать этот вопрос, поскольку пришел с удобного мне мира Qt где есть превосходная реализация MVC паттерна и создания таблиц хоть на пару миллионов элементов не проблема. Ожидал, что андроид имеет нечто похожее (ведь отображение таблиц частое занятие, нет?) на QTableView (скрин). Оказалось нет, там голый GridView который для меня есть вообще...
Android Вставка текста из буфера обмена в текстовое поле любого другого приложения http://www.cyberforum.ru/android-dev/thread1546627.html
По кнопке, которая находится поверх всех приложений, я вставляю в буфер "текст": layoutView.findViewById(R.id.button).setOnClickListener(new OnClickListener(){ public void onClick(View v) { int currentapiVersion = android.os.Build.VERSION.SDK_INT; if (currentapiVersion >= android.os.Build.VERSION_CODES.HONEYCOMB){ android.content.ClipboardManager clipboard = ...
Android Создание списка с настраиваемыми элементами Хочу создать список с настраиваемыми элементами. Нашел урок, сделал, программа компилит, но при запуске приложения оно останавливается. Какая ошибка не известно (компилляция с мобильного) package com.mycompany.myapp3; import android.app.*; import android.os.*; import android.view.*; import android.widget.*; import android.content.*; import java.util.*; import android.util.*; подробнее

Показать сообщение отдельно
Mikalai
248 / 224 / 91
Регистрация: 11.01.2015
Сообщений: 643
07.10.2015, 23:08     Показ невидимой части картинки анимацией
prouraist, если изображение вставить в ImageView, то его обрежет и двигать будет нечего. Можно сделать при помощи рисования в SurfaceView. Тут взял пример кода и переписал чутка. Подходит для любого изображения. показывает верхнюю часть картинки растягивая по ширине без изменения пропорций. при нажатии на экран двигается вверх до нижнего края. В манифесте для этого Activity ставил android:screenOrientation="landscape". Получилось много кода:

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
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Message;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
 
 
public class MainActivity extends Activity implements OnClickListener,
        SurfaceHolder.Callback {
 
    Bitmap bitmap;
    SurfaceView surfaceView;
    DrawingThread thread;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        //загружаем изображение
        bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.sun);
 
        surfaceView = (SurfaceView) findViewById(R.id.surfaceView);
        surfaceView.getHolder().addCallback(this);
        surfaceView.setOnClickListener(this);
    }
 
    @Override
    public void surfaceCreated(SurfaceHolder holder) {
        thread = new DrawingThread(holder, bitmap);
        thread.start();
    }
 
    @Override
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {}
 
    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {}
 
    @Override
    public void onClick(View v) {
        thread.startMotion();
    }
 
    @Override
    public void onBackPressed() {
        thread.quit();
        thread = null;
        finish();
    }
 
    private static class DrawingThread extends HandlerThread implements Handler.Callback {
 
        private static final int SHOW = 1;
        private static final int MOVE = 2;
        private SurfaceHolder holder;
        private Handler handler;
        private Bitmap bitmap;
        private int deltaY;
        private int bitmapY = 0;
 
        public DrawingThread(SurfaceHolder holder, Bitmap bitmap) {
            super("DrawingThread");
            this.holder = holder;
            this.bitmap = bitmap;
        }
 
        @Override
        protected void onLooperPrepared() {
            handler = new Handler(getLooper(), this);
            handler.sendEmptyMessage(SHOW);
        }
 
        public void startMotion() {
            handler.sendEmptyMessage(MOVE);
        }
 
        @Override
        public boolean quit() {
            handler.removeCallbacksAndMessages(null);
            return super.quit();
        }
 
        @Override
        public boolean handleMessage(Message msg) {
            Canvas canvas;
            switch (msg.what) {
                case SHOW:
                    bitmapY = 0;
                    canvas = holder.lockCanvas();
 
                    //подгоняем изображение под размер экрана
                    float scaleCoefficient = (float)canvas.getWidth() / (float)bitmap.getWidth();
                    int dstWidth = canvas.getWidth();
                    int dstHeight = (int) (bitmap.getHeight() * scaleCoefficient);
                    bitmap = Bitmap.createScaledBitmap(bitmap, dstWidth, dstHeight, false);
 
                    //определяем на какое расстояние будет двигаться изображение
                    this.deltaY = canvas.getHeight() - bitmap.getHeight();
 
                    canvas.drawBitmap(bitmap, 0f, 0f, null);
                    holder.unlockCanvasAndPost(canvas);
                    return true;
                case MOVE:
                    canvas = holder.lockCanvas();
                    canvas.drawBitmap(bitmap, 0f, bitmapY, null);
                    holder.unlockCanvasAndPost(canvas);
                    bitmapY -=2;
                    if(bitmapY < deltaY) {
                        handler.sendEmptyMessage(SHOW);
                        return true;
                    }
            }
            handler.sendEmptyMessage(MOVE);
            return true;
        }
    }
}
 
Текущее время: 00:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru