내일 당장 학교과제인데 집에 안드로이드 스튜디오가 먹통이라서 실행이 않돼네요;;
소스는 다있고 실행파일만 만들면돼는데 부탁드리겠습니다.ㅠㅠ
Biorhythm.java
package com.zzerr;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class Biorhythm extends Activity {
private BioView bioView;
private EditText inputYear, inputMonth, inputDay;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
bioView = (BioView)findViewById(R.id.myView);
inputYear = (EditText)findViewById(R.id.inputYear);
inputMonth = (EditText)findViewById(R.id.inputMonth);
inputDay = (EditText)findViewById(R.id.inputDay);
Button button = (Button)findViewById(R.id.showButton);
button.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
bioView.setBirthDay(Integer.parseInt(inputYear.getText().toString()),
Integer.parseInt(inputMonth.getText().toString()),
Integer.parseInt(inputDay.getText().toString()));
bioView.invalidate();
}
});
}
}
BioView.java
package com.zzerr;
import android.view.View;
import android.content.Context;
import android.util.AttributeSet;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.util.Log;
import java.util.Date;
public class BioView extends View {
private static final int mMaxDays = 30;
private static final int mMaxType = 3;
private static final long mTDV = (60*60*24*1000);
private static final double mPI = 3.14159;
private static final double mBioValues[] = { 23.0, 28.0, 33.0 };
private static final int mColors[] = { 0xff0000ff, 0xffff00ff, 0xff00ffff };
private Paint mPaint;
private Rect mRect;
private double mStartDays;
private Date mBirthDate, mTodayDate;
public BioView(Context context, AttributeSet attrs) {
super(context, attrs);
mRect = new Rect();
mPaint = new Paint();
mRect.top = 0;
mRect.bottom = getWidth();
mRect.left = 0;
mRect.right = getHeight();
mTodayDate = new Date();
Date startDate = new Date(mTodayDate.getYear(), mTodayDate.getMonth(), 1);
mStartDays = startDate.getTime()/mTDV;
mBirthDate = new Date();
mBirthDate.setYear(0);
}
public void setBirthDay(int year, int month, int day) {
mBirthDate.setYear(year);
mBirthDate.setMonth(month);
mBirthDate.setDate(day);
}
@Override
protected void onDraw(Canvas canvas) {
int cellWidth = getWidth()/mMaxDays;
mRect.top = 0;
mRect.bottom = getWidth();
mRect.left = 0;
mRect.right = getHeight();
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setColor(0xFFFFFFFF);
int x = 0, y = 0, oldY = 0;
// 세로줄 출력
for (int i = 0; i <= mMaxDays; i++) {
x += cellWidth;
canvas.drawLine(x, mRect.top, x, mRect.bottom, mPaint);
}
// 가로줄 출력
canvas.drawLine(0, mRect.bottom/2, mRect.right, mRect.bottom/2, mPaint);
// 오늘 날짜 출력
mPaint.setColor(0xFFFFFF00);
x = cellWidth * mTodayDate.getDate();
canvas.drawLine(x, mRect.top, x, mRect.bottom, mPaint);
// 바이오리듬 출력
if (mBirthDate.getYear() != 0) {
Log.e("LOG", "year:" + mBirthDate.getYear() +
"month:" + mBirthDate.getMonth() +
"day:" + mBirthDate.getDate());
double startDays = mStartDays;
double birthDays = mBirthDate.getTime()/mTDV;
for (int k = 0; k < mMaxType; k++) {
x = 0;
mPaint.setColor(mColors[k]);
for (int i = 0; i <= mMaxDays; i++) {
double gab = birthDays - startDays;
double p = (int)(Math.sin((gab/mBioValues[k]) * 2.0 * mPI) * 100.0);
y = mRect.bottom/2 + (int)(p * ((mRect.bottom/2.0)/100.0));
if (i != 0)
canvas.drawLine(x, oldY, x + cellWidth, y, mPaint);
oldY = y;
startDays++;
x += cellWidth;
}
}
}
super.onDraw(canvas);
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#666666" ><com.zzerr.BioView android:id="@+id/myView" android:layout_width="fill_parent" android:layout_height="330px" android:background="#000000" /> <TextView android:id="@+id/helpLabel" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@id/myView" android:layout_marginTop="20px" android:text="생년월일을 입력후에 보기버튼을 클릭해 주세요." /><EditText android:id="@+id/inputYear" android:layout_width="80px" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:text="" /><EditText android:id="@+id/inputMonth" android:layout_width="60px" android:layout_height="wrap_content" android:layout_toRightOf="@id/inputYear" android:layout_alignTop="@id/inputYear" android:text="" /><EditText android:id="@+id/inputDay" android:layout_width="60px" android:layout_height="wrap_content" android:layout_below="@id/myView" android:layout_toRightOf="@id/inputMonth" android:layout_alignTop="@id/inputMonth" android:text="" /> <Button android:id="@+id/showButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_marginLeft="10px" android:layout_toRightOf="@id/inputDay" android:layout_alignTop="@id/inputDay" android:text="보기" /></RelativeLayout>
R.java
/* AUTO-GENERATED FILE. DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found. It
* should not be modified by hand.
*/
package com.zzerr;
public final class R {
public static final class attr {
}
public static final class drawable {
public static final int icon=0x7f020000;
}
public static final class id {
public static final int helpLabel=0x7f050001;
public static final int inputDay=0x7f050004;
public static final int inputMonth=0x7f050003;
public static final int inputYear=0x7f050002;
public static final int myView=0x7f050000;
public static final int showButton=0x7f050005;
}
public static final class layout {
public static final int main=0x7f030000;
}
public static final class string {
public static final int app_name=0x7f040001;
public static final int hello=0x7f040000;
}
}