안드로이드 개발 질문/답변
(글 수 45,052)
제가 지금 View를 상속 받아 onDraw를 오버라이딩 했습니다.
그래서 Canvas로 글씨를 출력했는데.
가로 화면-> 세로 화면으로 바뀔때
View의 사이즈도 0으로 나오고
사이즈를 억지로 줘봐도 화면에 글씨도 출력이 되지 않습니다.
혹시 왜 안되는지 아시는 분 계신가요.
View 부분 소스 입니다.
그래서 Canvas로 글씨를 출력했는데.
가로 화면-> 세로 화면으로 바뀔때
View의 사이즈도 0으로 나오고
사이즈를 억지로 줘봐도 화면에 글씨도 출력이 되지 않습니다.
혹시 왜 안되는지 아시는 분 계신가요.
View 부분 소스 입니다.
public class ComparePrice_GraphView extends View {
private ArrayList<ArrayList<String[]>> values;
private final String[] keyValues;
private String[] horlabels;
private String[] verlabels;
private String title;
public ComparePrice_GraphView(Context context, ArrayList<ArrayList<String[]>> values,
String[] keyValues, String title, String[] horlabels,String[] verlabels) {
super(context);
ShoppingNoteLog.i("graphView Constructor!!");
if (values == null) {
values = null;
} else {
this.values = values;
}
this.keyValues = keyValues;
if (title == null) {
title = "";
} else {
this.title = title;
};
if (horlabels == null) {
this.horlabels = new String[0];
} else {
this.horlabels = horlabels;
};
if (verlabels == null) {
this.verlabels = new String[0];
} else {
this.verlabels = verlabels;
};
}
/**
* グラフを書く
*
* @see android.view.View#onDraw(android.graphics.Canvas)
*/
@Override
protected void onDraw(Canvas canvas) {
ShoppingNoteLog.i("graphView onDraw!!");
super.onDraw(canvas);
Paint paint = new Paint();
float border=returnFromDipToPixel(30);
// 縦の開始点
float horstart = border * 2;
// グラフ画面の高さ
float height = getHeight() - border;
// グラフ画面の長さ
float width = getWidth() - 5;
// 最後の値
float max = getMax();
// 最低の値
float min = getMin();
if (max == min) {
min = 0;
}
// グラフの深さ
float diff = max - min;
// グラフの高さ
float graphheight = height - (2 * border);
// グラフの長さ
float graphwidth = width - (2 * border);
// 線の色
int[] color = new int[] {
Color.rgb(0, 102, 255), Color.rgb(0, 180, 0), Color.rgb(255, 102, 0)
, Color.rgb(102, 220, 51), Color.rgb(255, 255, 180), Color.rgb(0, 255, 102) };
paint.setTextAlign(Align.CENTER);
paint.setColor(Color.WHITE);
canvas.drawText(title, (graphwidth / 2) + horstart, border - 15, paint);
ShoppingNoteLog.i("graphView drawText!!"+title+getHeight());
}
}
안드로이드 개발자 입니다.
많은 정보 공유 했으면 좋겠습니다^^




여러 종류의 화면 사이즈가 있는 것 같은데 호환성 있는 프로그램을 생각중입니다.
![]()
각 화면의 해상도를 어떻게 해야 얻을 수 있나요?
intwidth = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getWidth();위 함수로 디스플레이에 대한 정보를 읽어올 수 있습니다.