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

Как понять такой код? Интерфейсы - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android GridView - Избавляемся от пробелов http://www.cyberforum.ru/android-dev/thread1151087.html
Добрый день, товарищи! Хотелось бы попросить Вашей помощи в следующем вопросе: использую в приложении GridView. В качестве элементов - картинки. Хочу чтобы грид формировался динамически в...
Программирование Android LoadDataWithBaseURL Error loading keycharmap p = path.substring(0,path.lastIndexOf("/")+1); n = path.substring(path.lastIndexOf("/")+1); String html = ""; Display display = ((WindowManager)... http://www.cyberforum.ru/android-dev/thread1151075.html
Программирование Android Подменю в Navigation Drawer
Здравствуйте, уважаемые форумчане, подскажите пожалуйста в одном вопросе. Используя support library я создал новый проект и выбрал навигацию Navigation Drawer.Все отлично и хорошо, но понадобилось в...
Программирование Android Как выводить сообщение об отсутствии соединения с интернетом?
Здравствуйте! У меня в ViewPager загружаются 2 фрагмента. Каждый фрагмент делает асинхронный запрос, ответ парсится с помощю JSON. Вопрос в следующем: как лучше всего выводить меседж об...
Программирование Android Оценка производительности http://www.cyberforum.ru/android-dev/thread1150573.html
Здравствуйте, есть простой довольно вопрос, но ответа на него никак не могу найти. В общем пытались мы тут оценить производительность java на приложении для Андроида. Написали элементарнейший...
Программирование Android Изменения профайлов пользователя на платформе Android Здравствуйте. Пишу на языке java под android, используя eclipse и емуляторы. Проблема заключается в следующем - как мне изменить профайл пользователя в заданое время? Нужно чтобы приложение... подробнее

Показать сообщение отдельно
Igor-vrn
7 / 7 / 2
Регистрация: 14.12.2013
Сообщений: 94

Как понять такой код? Интерфейсы - Программирование Android

18.04.2014, 22:59. Просмотров 581. Ответов 5
Метки (Все метки)

Ситуация: разбираюсь с чужим кодом. Там рисование по SurfaceView. Код, естественно, не весь. Выборка того, что вызвало затруднения. "особо интересно" - подскажите как понимать такие объявления. Я всегда думал, что экземпляр интерфейса создать нельзя, а тут на тебе - создается. Примерно также расписываются слушатели (Listener-ы) при обработке событий. Но так я и не пойму, по каким соображениям создают экземпляр интерфейса и сразу же пишут его тело и вся эта катавасия происходит уже в методе (в конструкторе класса). Об интерфейсах читал в справочнике Шилдта. Ничего подобного не трактуется. Помогите разобраться.

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
class Example extends Thread {
 
private DrawHelper mDrawScreen;
 
private interface DrawHelper
    {
        void draw(Canvas canvas);
    }
 
// особо интересно
mDrawScreen = new DrawHelper()
        {
            public void draw(Canvas canvas)
            {
                refreshCanvas(canvas);
            }
        };
 
 private void draw(DrawHelper helper)
    {
        Canvas canvas = null;
        try
        {
            // подготовка Canvas-а
            canvas = mSurfaceHolder.lockCanvas(); 
            synchronized (mSurfaceHolder)
            {
                if (mInitialized)
                {
                    helper.draw(canvas);
                }
            }
        }
        catch (Exception e) { }
        finally
        {
            if (canvas != null)
            {
                mSurfaceHolder.unlockCanvasAndPost(canvas);
            }
        }
    }
 
private void refreshCanvas(Canvas canvas)
    {
        // вывод фонового изображения
        canvas.drawBitmap(mBackground, 0, 0, null);
        
        canvas.drawRect(mField, mPaint);
        
        mBall.draw(canvas);
        mUs.draw(canvas);
        mThem.draw(canvas);
 
        mScorePaint.setColor(Color.RED);
        canvas.drawText(String.valueOf(mThem.getScore()), mField.centerX(), mField.top - 10, mScorePaint);
        mScorePaint.setColor(Color.GREEN);
        canvas.drawText(String.valueOf(mUs.getScore()), mField.centerX(), mField.bottom + 25, mScorePaint);
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru