Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Android > Android: проблемы с Canvas


Автор: D_Alex 15.08.11, 21:00
Пробую писать под андроид, хотя бы простенькие Lines. Не могу понять, как соотносятся размеры иконок в ресурсах и точек на экране.
Код такой:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    public class GraphicsView extends View
        {
            public GraphicsView(Context context) { super(context); }
     
           @Override
            protected void onDraw(Canvas canvas)
            {      
               Bitmap myBitmap;
               for(int i = 0; i < gameCore.numOfRows; i++)
               {
                    for(int j = 0; j < gameCore.numOfRows; j++)
                    {      
                        switch(gameCore.gameField[i][j])
                        {
                        case 1:                
                            myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.blue);        
                            canvas.drawBitmap(myBitmap, gameCore.picSize * i, gameCore.picSize * j, null);                  
                            break;
                        case 2:
                            myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.brown);        
                            canvas.drawBitmap(myBitmap, gameCore.picSize * i, gameCore.picSize * j, null);
                            break;
                        case 3:
                            myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.cyan);        
                            canvas.drawBitmap(myBitmap, gameCore.picSize * i, gameCore.picSize * j, null);
                            break;
                        case 4:
                            myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.green);        
                            canvas.drawBitmap(myBitmap, gameCore.picSize * i, gameCore.picSize * j, null);
                            break;
                        case 5:
                            myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.orange);      
                            canvas.drawBitmap(myBitmap, gameCore.picSize * i, gameCore.picSize * j, null);
                            break;
                        case 6:
                            myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pink);        
                            canvas.drawBitmap(myBitmap, gameCore.picSize * i, gameCore.picSize * j, null);
                            break;
                        case 7:
                            myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.yellow);      
                            canvas.drawBitmap(myBitmap, gameCore.picSize * i, gameCore.picSize * j, null);
                            break;
                        default:
                            myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.blank);        
                            canvas.drawBitmap(myBitmap, gameCore.picSize * i, gameCore.picSize * j, null);
                            break;
                        }            
                    }
               }
            }
        }

picSize, и, соответственно, размер иконок - 50 пикселей.
В итоге выходит такой страх:
user posted image
Пример иконки:
user posted image
И второй вопрос - как мне уместить в окне приложения и canvas и элементы управления?
Сейчас у меня так:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
        <Button android:layout_width="106dp"
                android:id="@+id/button1"
                android:layout_height="wrap_content"
                android:text="New game"
                android:layout_alignParentBottom="true"
                android:layout_centerHorizontal="true"
                android:layout_marginBottom="24dp"
                android:onClick="startClick"/>
    </RelativeLayout>

<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    public void onCreate(Bundle savedInstanceState)
    {
            super.onCreate(savedInstanceState);
            //setContentView(R.layout.main);
            GraphicsView myview=new GraphicsView(this);
            setContentView(myview);        
    }

И в итоге кнопку при запуске просто не видно.

Автор: D_Alex 16.08.11, 05:16
уменьшила картинки до 30х30, причем pixSize остался 50 - теперь прорисовка почти нормальная. :huh: Как же работать с png?

Автор: SVK 16.08.11, 06:08
попробуй использовать постфикс px
Цитата
Must be a dimension value, which is a floating point number appended with a unit such as "14.5sp". Available units are: px (pixels), dp (density-independent pixels), sp (scaled pixels based on preferred font size), in (inches), mm (millimeters).
p.s. пальцем в небо :rolleyes:

Автор: D_Alex 16.08.11, 06:25
SVK не, все-таки не совсем то =) вот с bmp ясно - так сколько точек, столько и пикселей. А тут есть еще разрешение.. :crazy:

Автор: Вуйко з полонини 09.10.11, 16:11
D_Alex, что не ясно с лейаутами?
З.ы. модеры, поехали.

Автор: D_Alex 09.10.11, 19:50
Вуйко з полонини с лейаутами ясно, непонятно про соотношение размера пнг и итогового размера на экране

Автор: Вуйко з полонини 09.10.11, 19:58
D_Alex, почитай тут

Автор: D_Alex 09.10.11, 20:03
Вуйко з полонини вот оно что! спасибо большое :thanks:

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)