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

Почему не отрисовывается картинка? - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android WebView упорно отказывается выполнять JS http://www.cyberforum.ru/android-dev/thread1661870.html
Добрый день, форумчане! Наверное перейду сразу к проблеме. Есть код WebView mWebView; mWebView = (WebView)frag2.findViewById(R.id.webplat); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.setBackgroundColor(Color.parseColor("#f7e16b"));
Android Ошибка EndofMemory в Android Иногда, при переходе на другую активность вылетает ошибка "EndofMemory". Приложение закрывается и в тот же момент открывается на той же активности. Какие могут быть варианты решения этой проблемы? Нашел только вариант через .bin, но что-то мне не очень понятно, что мы там меняем. Заранее спасибо! http://www.cyberforum.ru/android-dev/thread1661784.html
The connection to adb is down and a severe error has occured. you must restart adb and eclipse Android
Впервый раз лабы запускала, как только сделала - все было нормально.. А теперь выбивает подобное сообщение: the connection to adb is down and a severe error has occured. you must restart adb and eclipse вышла из эклипса - перезагрузила, запустила вновь, но все тоже.. в интернете на подобную ошибку очень мало инфы. не могу разобраться что делать то.. помогите человечку путным советом..
ViewPager (Tabbed activity) как добавить данные на сраницы? Android
Среда андройд студио. "я создал" проект из коробки tabbed activity, автоматом создалось 2 xml, main отвечает за виджеты ,а второй за данные,поправьте меня,если не так что-то, на fragment _main я разместил свои данные,свайп в право работает и влево так же и вот что я хочу спросить: как мне добавить на второй,3,4 ит.д экраны другие данные? Нашел в классе PlaceholderFragment такой код:...
Android Видео в приложении http://www.cyberforum.ru/android-dev/thread1661570.html
Всем доброго времени суток. Намереваюсь создать приложение с видео контентом внутри, что бы можно было в любой момент его просматривать, без интернета. Разумно ли будет хранить видео внутри приложения? или же лучше воспроизводить его на устройстве пользователя через интернет. Общая длина всех видео роликов будет примерно мин. 40.
Android Вылетает приложение при нажатии на кнопку Здравствуйте, столкнулся с проблемой, что при нажатии на кнопку приложение вылетает. Программирую в Android Studio, кто нибудь сталкивался с таким? Прикладываю код: Событие при выполнении которого приложение вылетает: View.OnClickListener clickSek=new View.OnClickListener() { @Override public void onClick(View v) { ... подробнее

Показать сообщение отдельно
maxapet
0 / 0 / 0
Регистрация: 08.02.2016
Сообщений: 95
14.02.2016, 18:20  [ТС]     Почему не отрисовывается картинка?
Да, конечно, вот код:

MainView.java
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
public class MainView extends SurfaceView implements SurfaceHolder.Callback {
 
    private MainThread mMainThread;
    private Hero mHero;
 
    public MainView(Context context) {
        super(context);
        init(null, 0);
    }
 
    private void init(AttributeSet attrs, int defStyle) {
        // добавляем этот класс, как содержащий функцию обратного вызова
        // для взаимодействия с событиями
        getHolder().addCallback(this);
 
        mHero = new Hero(
                BitmapFactory.decodeResource(getResources(), R.drawable.moving_Hero)
                , 10, 50// начальное положение
                , 80, 80// ширина и высота спрайта
                , 25, 12);// FPS и число кадров в анимации
 
        // делаем MainView.focusable, чтобы оно могло обрабатывать события
        setFocusable(true);
 
        // создаём основной поток
        mMainThread = new MainThread(this);
    }
 
    public void update(){
        mHero.update();
    }
 
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawColor(Color.WHITE);
 
        mHero.draw(canvas);
////////////////////
        // TODO: consider storing these as member variables to reduce
        // allocations per draw cycle.
        int paddingLeft = getPaddingLeft();
        int paddingTop = getPaddingTop();
        int paddingRight = getPaddingRight();
        int paddingBottom = getPaddingBottom();
 
        int contentWidth = getWidth() - paddingLeft - paddingRight;
        int contentHeight = getHeight() - paddingTop - paddingBottom;
        ////////////////////////
        canvas.restore();
    }
 
    @Override
    public void surfaceCreated(SurfaceHolder holder) {
        Canvas canvas = null;
        SurfaceHolder surfaceHolder = getHolder();
        mMainThread.setRunning(true);
        mMainThread.start();
        try {
            // получаем объект Canvas и выполняем отрисовку
            canvas = surfaceHolder.lockCanvas();
            synchronized (surfaceHolder) {
                canvas.drawColor(Color.WHITE);
                mHero.draw(canvas);
            }
        } finally {
            if (canvas != null) {
                // отрисовка выполнена. выводим результат на экран
                surfaceHolder.unlockCanvasAndPost(canvas);
            }
        }
    }
 
    @Override
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
        //mMainThread.setRunning(false);
    }
 
    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {
    //посылаем потоку команду на закрытие и дожидаемся,
    //пока поток не будет закрыт.
        boolean retry = true;
        while (retry) {
            try {
                    mMainThread.join();
                    retry = false;
            } catch (InterruptedException e) {
                 // пытаемся снова остановить поток thread
            }
        }
   }
}
MainThread.java
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
public class MainThread extends Thread {
    // признак того, что игра запущена
    private boolean running;
    private MainView mMainView;
    private SurfaceHolder mSurfaceHolder;
 
    MainThread(MainView mMainView) {
        // вызываем базовый конструктор
        super();
 
        // настраиваем члены класса
        this.mMainView = mMainView;
        mSurfaceHolder = mMainView.getHolder();
    }
 
    public void setRunning(boolean running){
        this.running = running;
    }
 
    @Override public void run(){
        Canvas canvas;
        while(running){
            canvas = null;
            // пытаемся заблокировать canvas
            // для изменение картинки на поверхности
            try{
                canvas = mSurfaceHolder.lockCanvas();
                synchronized(mSurfaceHolder){
                    // здесь будет обновляться состояние игры
                    // и формироваться кадр для вывода на экран
                    this.mMainView.draw(canvas);//Вызываем метод для рисования
                    sleep(10);
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            } finally{
                // в случае ошибки, плоскость не перешла в
                //требуемое состояние
                if(canvas!= null){
                    mSurfaceHolder.unlockCanvasAndPost(canvas);
                }
            }
        }
    }
}
Hero.java
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
import android.app.ActionBar;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.util.AttributeSet;
 
// режимы движения героя
enum HeroMode {
    UNDEFINED,      // не опредён
    STEP,           // шаг
    RUN,            // бег
    JUMP_UP,        // начало прыжка
    JUMP_FLY,       // полёт в прыжке
    JUMP_DOWN,      // окончание прыжка
    FALL_BACK,      // падаение назад
    FALL_FORWARD    // падение вперёд
}
 
public class Hero {
    private static final String TAG = Hero.class.getSimpleName();
 
    private Bitmap mBitmap;     // Картинка с анимационной последовательностью
    private Rect mSourceRect;   // Прямоугольная область в bitmap, которую нужно нарисовать
    private Rect mDestRect;     // Прямоугольная область в bitmap, которую нужно нарисовать
    private int mFramesCnt;     // Число кадров в анимации
    private int mCurrentFrameNo;// Текущий кадр
    private long frameTicker;   // время обновления последнего кадра
    private int framePeriod;    // сколько миллисекунд должно пройти перед сменой кадра (1000/fps)
 
    private HeroMode mHeroMode = HeroMode.STEP;
 
    private int mSpriteWidth;// ширина спрайта (одного кадра)
    private int mSpriteHeight;// высота спрайта
 
    private int mX;// X координата спрайта (верхний левый угол картинки)
    private int mY;// Y координата спрайта (верхний левый угол картинки)
 
    public Hero(Context context, AttributeSet attrs) {}
 
    public Hero(Bitmap bitmap, int x, int y, int width, int height, int fps, int frameCount) {
        ActionBar.LayoutParams layoutParams = new ActionBar.LayoutParams(175, 105);
        this.mBitmap = bitmap;
        this.mX = x;
        this.mY = y;
        mCurrentFrameNo = 0;
        mFramesCnt = frameCount;
        mSpriteWidth = width;
        mSpriteHeight = height;
        mSourceRect = new Rect(0, 0, mSpriteWidth, mSpriteHeight);
        framePeriod = 1000 / fps;
        frameTicker = 0l;
    }
 
    public void draw(Canvas canvas) {
        //комманда вывода рисунка на экран.
        canvas.drawBitmap(mBitmap, mSourceRect, mDestRect, null);
    }
 
    public void update() {
        mCurrentFrameNo++;
 
        switch (mHeroMode) {
            case STEP: {
                // TODO: отобразить героя, идущего шагом
            }
            break;
            case RUN: {
                // TODO: отобразить бегущего героя
            }
            break;
            case JUMP_UP: {
                // TODO: отобразить начало прыжка
            }
            break;
            case JUMP_FLY:
            {
                // TODO отобразить героя в полёте
            }
            break;
            case JUMP_DOWN:{
                // TODO: отобразить спускающегося героя
            }
            break;
            case FALL_BACK:{
                // TODO: отобразить героя, падающего назад
            }
            break;
            case FALL_FORWARD:{
                // TODO: отобразить героя, падающего вперёд
            }
            break;
            default: {
                // TODO отобразить стоящего героя
            }
        }
    }
}
}
P.S. Это, пока, только заготовки. Хотелось для начала попробовать анимацию в Android.
 
Текущее время: 12:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru