1. 시간표 기능이라.....
2. 시간이 촉박하다.....
3. 처음 생각한 방법이 table view 나 아무 뷰로 가로를 6등분, 세로를 n등분 해서 분 단위로 버튼을 위치에 활성화 시켜서...?
설명하기가 조금 애매하다. (블로그에 노트처럼 그림그리는 기능도 있었으면 좋겠다.
월 |
화 |
수 |
목 |
금 |
토 |
|
|
|
활성 |
|
|
|
활성 |
|
활성 |
|
|
|
활성 |
|
|
|
|
|
|
|
|
|
|
이런식으로??
세로축이 n개로 쪼개져 있으면... 활성 부분만 활성되도록 색깔도 바꿔주고....
4. 는 미친짓이란 걸 깨닮았다. ondraw 로 canvas.drawRect로 그려주기로
5. canvas 크기를 구하는 방법에서 애를 많이 먹었지만... 그래도 무난하네.
예제코드
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int h = getHeight(); // 세로길이를 구해온다.
int w = getWidth(); // 가로길이를 구해온다.
Paint paint = new Paint();
paint.setColor(Color.BLUE);
Rect r1 = new Rect();
r1.set(sx, sy, ex, ey); //속성은 각 좌표들이다.
canvas.drawrect(r1,paint);
}
6. 이제 text를 그려줄 차례....
상대 좌표로 그리는 것이 매우 힘든 것 같다.
다음엔 좌표찍는 걸로 코딩하는 건 기피해야 할듯....
텍스트를 그리는 것은 darwtext 를 사용한다.
drawtext 는 여러가지 속성을 지원하지만 글씨를 잘라서 줄바꿈 하는 것이 여간 어려운 것이 아니였다.
결국은 텍스트를 하나하나로 쪼개어 r1의 가로길이보다 작을 경우 String line 에 넣어주고
길이가 r1의 가로길이 보다 커지는 순간 drawText 해주는 방법으로 크기를 맞춰주었습니다.
예제코드
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
Rect r1 = new Rect();
r1.set(sx, sy, ex, ey); //속성은 각 좌표들이다.
canvas.drawrect(r1,paint);
String str;
int fontSize = 20;
int lineHeight = 0;
int yoffset = 0;
int margin = 5;
String[] lines = str.split("");
lineHeight = (int) (calculateHeightFromFontSize(str, fontSize));
String line = "";
for (int i = 0; i < lines.length; ++i) {
if(calculateWidthFromFontSize(line + lines[i], fontSize) <= r1.width()-margin*2){
line = line + lines[i];
}else{
paint.setTextAlign(Align.CENTER);
canvas.drawText(line,x, y + yoffset, paint);
yoffset = yoffset + lineHeight;
line = lines[i];
}
}
canvas.drawText(line, x, y+ yoffset, paint);
}
private int calculateWidthFromFontSize(String testString, int currentSize) {
Rect bounds = new Rect();
Paint paint = new Paint();
paint.setTextSize(currentSize);
paint.getTextBounds(testString, 0, testString.length(), bounds);
return (int) Math.ceil( bounds.width());
}
private int calculateHeightFromFontSize(String testString, int currentSize)
{
Rect bounds = new Rect();
Paint paint = new Paint();
paint.setTextSize(currentSize);
paint.getTextBounds(testString, 0, testString.length(), bounds);
return (int) Math.ceil( bounds.height());
}
뭐... 대출 이런식으로??
이번에는 정리해서 안드로이드에 포스팅해야겠다.
터치메소드는 언제 추가하지....
p.s. 시간표 데이터 추가하다가 귀찮아서 만건데...
다시보니 컴퓨터학부 같지가 않다. ㅋㅋㅋ
'Portfolio > 숭실대' 카테고리의 다른 글
식당 랜덤 체크 db 파일 (0) | 2014.09.15 |
---|---|
GCM 학사정보 팝업기능 (0) | 2014.09.15 |