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

시계어플 오류 질문입니다. 도와주세요~~

–2 추천

아래는 실질적인 일을하는 class(clockview) 이구요...

그아래는 main액티비티입니다.~~

오류가 걸려서 올려봅니다.

로그켓이구요 ~~ 해결 해주시면 감사하겠습니다.~~

//--------------------------------clockview class--------

package exam.MidtermExam;

import java.util.Calendar;
import java.util.GregorianCalendar;
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.os.Handler;
import android.os.Message;
import android.view.View;

 

@SuppressLint({ "DrawAllocation", "HandlerLeak" })
public class ClockView extends View {
  Canvas mCanvas; 
 
  private Bitmap mClock;
  private Bitmap mCenter;
  private Bitmap mPin[] = new Bitmap[3]; 
 
  public ClockView(Context context) {
   super(context);
   // TODO Auto-generated constructor stub
  
   mHandler.sendEmptyMessageDelayed(0, 1000);
   }
 
  Handler mHandler = new Handler() {
   @Override
   public void handleMessage(Message msg) {
    // TODO Auto-generated method stub
    drawClock(mCanvas);
    invalidate();
    mHandler.sendEmptyMessageDelayed(0, 1000);
    }
   };
   @Override
  
   protected void onDraw(Canvas canvas) {
    // TODO Auto-generated method stub
    //super.onDraw(canvas);
          
    mClock = BitmapFactory.decodeResource(this.getResources(), R.drawable.dial);                  
    mCenter = BitmapFactory.decodeResource(this.getResources(), R.drawable.center);
    mPin[0] = BitmapFactory.decodeResource(this.getResources(), R.drawable.sec_n2);        
    mPin[1] = BitmapFactory.decodeResource(this.getResources(), R.drawable.min_n2);        
    mPin[2] = BitmapFactory.decodeResource(this.getResources(), R.drawable.hour_n2);  
   
    mCanvas = canvas;
    drawClock(canvas);    
   
    }    
  
   private void drawClock(Canvas canvas) {
    // TODO Auto-generated method stub                  
    GregorianCalendar mCalendar = new GregorianCalendar();
    int hour = mCalendar.get(Calendar.HOUR);
    int min = mCalendar.get(Calendar.MINUTE);   
    int sec = mCalendar.get(Calendar.SECOND);   
    float rSec = sec *6 ;
    // 360도 / 60초 = 6도/초       
    float rMin = min*6 + rSec/60;
    //        
    float rHour = hour*30 + rMin/12 ;
    int w = mClock.getWidth()/2;
    // 반폭       
    int h = mClock.getHeight()/2; 
    int w1=mPin[0].getWidth()/2;   
    int h1=mPin[0].getHeight()-28;   
    int w2=mPin[1].getWidth()/2;   
    int h2=mPin[1].getHeight()-15;    
    int w3=mPin[2].getWidth()/2;   
    int h3=mPin[2].getHeight()-15;
    int w4=mCenter.getWidth()/2;   
    int h4=mCenter.getHeight()-40;
    int cx = getWidth()/2;      
    int cy = getHeight()/2;     
    canvas.drawBitmap(mClock, cx-w, cy-h, null);  
    canvas.rotate(rHour,cx,cy);       
    canvas.drawBitmap(mPin[2],cx-w3,cy-h3,null);
    //시침 맨아래                 
    canvas.rotate(rMin-rHour,cx,cy); 
    canvas.drawBitmap(mPin[1],cx-w2,cy-h2,null);
    canvas.rotate(rSec-rMin,cx,cy);     
    canvas.drawBitmap(mPin[0],cx-w1,cy-h1,null);
    //초침 맨위에                          
    canvas.rotate(-rSec,cx,cy);   
    canvas.drawBitmap(mCenter, cx-w4, cy-h4, null);  
  
   }  
 }

//----------------------액티미티 매인 클래스-------------------

package exam.MidtermExam;

import android.app.Activity;
import android.os.Bundle;


public class MidtermExam extends Activity {
ClockView Clock_V;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  // TODO 자동 생성된 메소드 스텁
  super.onCreate(savedInstanceState);
  Clock_V=new ClockView(getBaseContext());
 }
  
 
}
 


 

360d (120 포인트) 님이 2014년 2월 17일 질문

1개의 답변

0 추천
package com.example.midtermexam;

import java.util.Calendar;
import java.util.GregorianCalendar;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;


public class MidtermExam extends Activity {
MidtermExam Clock_V;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  // TODO 자동 생성된 메소드 스텁
  super.onCreate(savedInstanceState);
 
  setContentView(new ClockView(this)); 
 }
  
 public class ClockView extends View {
   Canvas mCanvas; 
  
   private Bitmap mClock;
   private Bitmap mCenter;
   private Bitmap mPin[] = new Bitmap[3]; 
   
   float rSec;
   float rMin;     
     float rHour;
     int w;
     // 반폭       
     int h; 
     int w1;   
     int h1;   
     int w2;   
     int h2;    
     int w3;   
     int h3;
     int w4;   
     int h4;
     int cx;      
     int cy;     
  
   public ClockView(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
    mClock = BitmapFactory.decodeResource(this.getResources(), R.drawable.ic_launcher);                  
     mCenter = BitmapFactory.decodeResource(this.getResources(), R.drawable.ic_launcher);
     mPin[0] = BitmapFactory.decodeResource(this.getResources(), R.drawable.ic_launcher);        
     mPin[1] = BitmapFactory.decodeResource(this.getResources(), R.drawable.ic_launcher);        
     mPin[2] = BitmapFactory.decodeResource(this.getResources(), R.drawable.ic_launcher);  
    mHandler.sendEmptyMessageDelayed(0, 1000);
    }
  
   Handler mHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
     // TODO Auto-generated method stub
     drawClock();
     invalidate();
     mHandler.sendEmptyMessageDelayed(0, 1000);
     }
    };
    @Override
   
    protected void onDraw(Canvas canvas) {
     canvas.drawBitmap(mClock, cx-w, cy-h, null);  
      canvas.rotate(rHour,cx,cy);       
      canvas.drawBitmap(mPin[2],cx-w3,cy-h3,null);
      //시침 맨아래                 
      canvas.rotate(rMin-rHour,cx,cy); 
      canvas.drawBitmap(mPin[1],cx-w2,cy-h2,null);
      canvas.rotate(rSec-rMin,cx,cy);     
      canvas.drawBitmap(mPin[0],cx-w1,cy-h1,null);
      //초침 맨위에                          
      canvas.rotate(-rSec,cx,cy);   
      canvas.drawBitmap(mCenter, cx-w4, cy-h4, null);  
     super.onDraw(canvas);
     }    
   
    private void drawClock() {
     // TODO Auto-generated method stub                  
     GregorianCalendar mCalendar = new GregorianCalendar();
     int hour = mCalendar.get(Calendar.HOUR);
     int min = mCalendar.get(Calendar.MINUTE);   
     int sec = mCalendar.get(Calendar.SECOND);   
     rSec = sec *6 ;
     // 360도 / 60초 = 6도/초       
     float rMin = min*6 + rSec/60;
     //        
     float rHour = hour*30 + rMin/12 ;
     int w = mClock.getWidth()/2;
     // 반폭       
     h = mClock.getHeight()/2; 
    w1=mPin[0].getWidth()/2;   
     h1=mPin[0].getHeight()-28;   
     w2=mPin[1].getWidth()/2;   
     h2=mPin[1].getHeight()-15;    
     w3=mPin[2].getWidth()/2;   
     h3=mPin[2].getHeight()-15;
     w4=mCenter.getWidth()/2;   
     h4=mCenter.getHeight()-40;
     cx = getWidth()/2;      
    cy = getHeight()/2;     
    }  
  }
}

살짝 손을 봤어요~ 참고하세요

이미지 아이디는 글쓴님이 가진 것에 맞게 변경해주세요

초보개발자ㅠ (33,870 포인트) 님이 2014년 2월 17일 답변
MidtermExam = 과제냄새
응? ㅋㅋ 생각지도 못한..!! 그런건가요 ;;
하지만 저 소스를 보면 아시겠지만 막코딩으로 실행만 되게 해놓은거라서 ㅋㅋㅋㅋㅋ
다듬으려면 약간의 공부는 하시겠죠 머
에러문구만 조금만 봐도 어느 부분이 오류인지 맥은 짚으실텐데..
킁킁..
감사합니다~ ㅠ 과제는 아니구요;;
이때까지 만들려던거 다 포기하고(너무 어려워서ㅠ)
가장 위젯이 간단하다고 하더라구요. 공부도 된다고 하고..
그래서 소스있으면 가져다가 공부할려는 목적이였습니다~
많은 고수분들께 감사합니다~
...