마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

RectF/Canvas/Paint 클래스로 그릴 때 단위!???

0 추천
그릴 때 숫자만 입력하잖아요

출력되는 결과는 px이죠..?

이걸 mm나 inch로는 할 수 없나요??

정 정말로 안되면  dp라도
야도란 (1,410 포인트) 님이 2015년 1월 9일 질문

2개의 답변

0 추천
 
채택된 답변
전체적으로 그림들의 위치는 dp로 잡아서 디자인해주시고

화면에 뿌릴때에는 dp를 px로 변환해 주심됩니다.

그럼 다양한 해상도에 얼추 맞게됩니다.
nicehee (73,100 포인트) 님이 2015년 1월 9일 답변
야도란님이 2015년 1월 12일 채택됨
0 추천

dp 를 pixel 로 변환하는 기능을 이용해서 dp 기준으로 코딩하시는게, 멀티 스크린에 도움이 될것 같습니다.

/*
 * DimTool.java
 * Copyright 2013 Burke Choi All rights reserved.
 *             http://www.sarangnamu.net
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package net.sarangnamu.common;
 
import android.content.Context;
 
/**
 * <pre>
 * {@code
    DimTool.dpTpPixel(context, 100);
 * }
 * </pre>
 * @author <a href="mailto:aucd29@gmail.com">Burke Choi</a>
 */
public class DimTool {
    public static float pixelToDp(Context context, float pixel) {
        return pixel / context.getResources().getDisplayMetrics().density;
    }
 
    public static float dpToPixel(Context context, float dp) {
        return dp * context.getResources().getDisplayMetrics().density;
    }
 
    public static int dpToPixelInt(Context context, float dp) {
        return (int)(dp * context.getResources().getDisplayMetrics().density);
    }
 
    public static float[] dpToPixel(Context context, float dp1, float dp2, float dp3, float dp4) {
        float[] pixels = new float[4];
        pixels[0] = dpToPixel(context, dp1);
        pixels[1] = dpToPixel(context, dp2);
        pixels[2] = dpToPixel(context, dp3);
        pixels[3] = dpToPixel(context, dp4);
 
        return pixels;
    }
 
    public static int[] dpToPixelInt(Context context, int dp1, int dp2, int dp3, int dp4) {
        int[] pixels = new int[4];
        pixels[0] = dpToPixelInt(context, dp1);
        pixels[1] = dpToPixelInt(context, dp2);
        pixels[2] = dpToPixelInt(context, dp3);
        pixels[3] = dpToPixelInt(context, dp4);
 
        return pixels;
    }
 
    public static float[] dpToPixel(Context context, float[] dp) {
        float[] pixels = new float[4];
        pixels[0] = dpToPixel(context, dp[0]);
        pixels[1] = dpToPixel(context, dp[1]);
        pixels[2] = dpToPixel(context, dp[2]);
        pixels[3] = dpToPixel(context, dp[3]);
 
        return pixels;
    }
 
    public static int[] dpToPixelInt(Context context, int[] dp) {
        int[] pixels = new int[4];
        pixels[0] = dpToPixelInt(context, dp[0]);
        pixels[1] = dpToPixelInt(context, dp[1]);
        pixels[2] = dpToPixelInt(context, dp[2]);
        pixels[3] = dpToPixelInt(context, dp[3]);
 
        return pixels;
    }
}
aucd29 (218,390 포인트) 님이 2015년 1월 9일 답변
...