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

что то не то с рисованием( - Android

Восстановить пароль Регистрация
 
Androot
0 / 0 / 0
Регистрация: 11.09.2012
Сообщений: 27
15.11.2012, 09:00     что то не то с рисованием( #1
Здравствуйте, появился такой вопрос. То есть его не было до того момента пока я не выложил приложение на сайт и его не стали скачивать люди. смысл моего приложение накладывать на картинку слова, фотографии и потом это дело сохранять. я отлаживал на эмуляторе с экранами 4 wvga Nexus s b 3.7 wvga nexus one
тестировал на своем планшете 9.7
везде нормально отображалось и сохранялось.
но тут пришол вопрос на форуме от скачавшего пользователя что картинка искривилась, и в самом деле когда я выбрал в эмуляторе экран Samsung Galaxy Nexus и запустил изображение то картинка которая получилась на выходе не как не соответствовала с тем на чем я тестировал это приложение.
вод код основной части
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
 Paint paint = new Paint();
        Bitmap bmpBase = null;
        bmpBase = Bitmap.createBitmap(700, 500, Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bmpBase);
        Resources res_obraz = this.getResources();
         bm = BitmapFactory.decodeResource(res_obraz, R.drawable.obraz);     
         canvas.drawBitmap(bm, 0, 0, paint);
         bm2 = galleryPic;
         int width = bm2.getWidth();
         int height = bm2.getHeight();
         Matrix matrix = new Matrix();
         float newWidth = 205;
         float newHeight = 262;
         float scaleWidth = ((float) newWidth) / width;
        float scaleHeight = ((float) newHeight) / height;
        matrix.postScale(scaleWidth,scaleHeight);
         bm3 = Bitmap.createBitmap(bm2, 0, 0,
             width, height, matrix, true);
         
         canvas.drawBitmap(bm3, 455, 8, paint);
         Paint textPaint = new Paint();
         textPaint.setTextSize(58);
         Typeface type = Typeface.createFromAsset(getAssets(),"fonts/olga_ctt.ttf"); 
        textPaint.setTypeface(type);
        textPaint.setColor(Color.BLUE);
         canvas.drawText(surname_s, 175, 113, textPaint);
         canvas.drawText(name_s+" "+otch_s, 15, 160, textPaint);
         canvas.drawText(""+age_i, 135, 207, textPaint);
         canvas.drawText(pol_s, 310, 207, textPaint);
         canvas.drawText(d_s, 185, 247, textPaint);
         canvas.drawText(d_s1, 15, 287, textPaint);
         canvas.drawText(d_s2, 15, 327, textPaint);
         canvas.drawText(d_s3, 15, 367, textPaint);
         bm4 = BitmapFactory.decodeResource(res_obraz, R.drawable.avt);
 
         canvas.drawBitmap(bm4, 485, 300, paint);
         mday = c.get(Calendar.DAY_OF_MONTH);
        
        myear = c.get(Calendar.YEAR);
        
       
         if (myear>=2000){
             myear = c.get(Calendar.YEAR)-2000;
         }
         mmonth = c.get(Calendar.MONTH)+1;
         month(mmonth);
         
         canvas.drawText(""+mday, 115, 483, textPaint);
         canvas.drawText(mont, 200, 480, textPaint);
         canvas.drawText(""+myear, 418, 483, textPaint);
на тех экрана где я тестировал изображение во-первых полное ( bm = BitmapFactory.decodeResource(res_obraz, R.drawable.obraz); )
во-вторых надписи стоят там где нужно и фотография стоит на своем месте.
а на Samsung Galaxy Nexus сам образ ( bm = BitmapFactory.decodeResource(res_obraz, R.drawable.obraz); ) обрезан примерно в 3 раза по высоте и 2 раза по ширине и сами надписи вместе с фоткой сместились.

что делать???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2012, 09:00     что то не то с рисованием(
Посмотрите здесь:

Android Как достать из textView, что что сейчас отображает ViePager
Что такое "кэш" в android? Как можно программно сохранить что-то в кэш? Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
razer89
15 / 15 / 0
Регистрация: 20.06.2010
Сообщений: 142
15.11.2012, 21:17     что то не то с рисованием( #2
Лень было разбираться с Вашим кодом, но на первый взгляд кажется, что это все из-за того, что в методах рисования Вы используете указание позиции на экране в пикселях, а не в dp или других величинах.
Androot
0 / 0 / 0
Регистрация: 11.09.2012
Сообщений: 27
16.11.2012, 07:22  [ТС]     что то не то с рисованием( #3
Цитата Сообщение от razer89 Посмотреть сообщение
Лень было разбираться с Вашим кодом, но на первый взгляд кажется, что это все из-за того, что в методах рисования Вы используете указание позиции на экране в пикселях, а не в dp или других величинах.
а как програмно указывать в dp?
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
16.11.2012, 18:03     что то не то с рисованием( #4
конвертнуть в пиксели
Java
1
2
float density = context.getResources().getDisplayMetrics().density;
float px = someDpValue * density;
а лучше прописывать в ресурсах, оттуда можно сразу в пикселях вытянуть.
lifestyle
Mobile Developer
 Аватар для lifestyle
231 / 227 / 4
Регистрация: 10.05.2009
Сообщений: 917
17.11.2012, 15:20     что то не то с рисованием( #5
Вот пример русурса с dp(dip)

XML
1
2
<dimen name = "value_name">10dp</dimen> 
<dimen name = "value_name">10dip</dimen>
Добавлено через 1 минуту
Цитата Сообщение от V0v1k Посмотреть сообщение
конвертнуть в пиксели
Java
1
2
float density = context.getResources().getDisplayMetrics().density;
float px = someDpValue * density;
а лучше прописывать в ресурсах, оттуда можно сразу в пикселях вытянуть.
формула не совсем правильная - нету аргумента DPI.
По этому на экранах с разным DPI будут опять проблемы, куда этот аргумент вставить в формуле - не помню, нужно погуглить
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
17.11.2012, 18:44     что то не то с рисованием( #6
Цитата Сообщение от lifestyle Посмотреть сообщение
нету аргумента DPI.
че?..
kvaka
 Аватар для kvaka
29 / 29 / 3
Регистрация: 26.06.2012
Сообщений: 163
17.11.2012, 23:08     что то не то с рисованием( #7
Цитата Сообщение от lifestyle Посмотреть сообщение
формула не совсем правильная - нету аргумента DPI.
По этому на экранах с разным DPI будут опять проблемы, куда этот аргумент вставить в формуле - не помню, нужно погуглить
Правильная формула. Даже не представляю что ты гуглить собираешься.
количество пикселей = количество dp * плотность экрана.

а первоисточник здесь:
http://developer.android.com/guide/p...s_support.html
lifestyle
Mobile Developer
 Аватар для lifestyle
231 / 227 / 4
Регистрация: 10.05.2009
Сообщений: 917
19.11.2012, 00:14     что то не то с рисованием( #8
Цитата Сообщение от kvaka Посмотреть сообщение
Правильная формула. Даже не представляю что ты гуглить собираешься.
количество пикселей = количество dp * плотность экрана.

а первоисточник здесь:
http://developer.android.com/guide/p...s_support.html
Упс, точно прогнал чето, просмотрел плотность...
Yandex
Объявления
19.11.2012, 00:14     что то не то с рисованием(
Ответ Создать тему
Опции темы

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