Portfolio/숭실대

시간표 기능

루카스강 2014. 9. 21. 15:25

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 > 숭실대' 카테고리의 다른 글

시간표 기능  (0) 2014.09.21
식당 랜덤 체크 db 파일  (0) 2014.09.15
GCM 학사정보 팝업기능  (0) 2014.09.15