package com.example.administrator.myapplication;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.RectF;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.AttributeSet;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import java.util.Vector;
class stay1 extends View
{String s="";
final int r=300;
final double fi=3.141592;
Vector<Integer> vector1=new Vector<Integer>();
Vector<Integer> vector2=new Vector<Integer>();
Vector<Integer> vector3=new Vector<Integer>();
Vector<Integer> vector4=new Vector<Integer>();
int w=360,h=540;
int a=0,b=0,c,e=0,f=0,g;
int x[]=new int[30],y[]=new int[30];
public stay1(Context context) {
super(context);
}
public stay1(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
Path path = new Path();
Paint paint = new Paint();
paint.setStyle(Paint.Style.STROKE);
path.addCircle(w,h, r, Path.Direction.CW);
path.addCircle(w, h, r+100, Path.Direction.CW);
paint.setColor(Color.BLUE);
canvas.drawPath(path, paint);
paint.setStyle(Paint.Style.FILL);
paint.setTextSize(32);
canvas.drawTextOnPath(" 6 7 8 9 10 11 12 13 14 15 16 17 18 19 " +
" 20 21 22 23 0 1 2 3 4 5", path, -30, -20, paint);
RectF rectF=new RectF(60,240,660,840);
y[0]=h;
x[0]=w+r;
y[1]=h+(int)(r*Math.sin(15*fi/180));
x[1]=w+(int)(300*Math.sin(75*fi/180));
y[2]=h+(int)(r*Math.sin(30*fi/180));
x[2]=w+(int)(r*Math.sin(60*fi/180));
y[3]=h+(int)(r*Math.sin(45*fi/180));
x[3]=w+(int)(r*Math.sin(45*fi/180));
y[4]=h+(int)(r*Math.sin(60*fi/180));
x[4]=w+(int)(300*Math.sin(30*fi/180));
y[5]=h+(int)(300*Math.sin(75*fi/180));
x[5]=w+(int)(300*Math.sin(15*fi/180));
y[6]=h+300;
x[6]=w;
y[7]=h+(int)(r*Math.sin(75*fi/180));
x[7]=w-(int)(r*Math.sin(15*fi/180));
y[8]=h+(int)(r*Math.sin(60*fi/180));
x[8]=w-(int)(r*Math.sin(30*fi/180));
y[9]=h+(int)(r*Math.sin(45*fi/180));
x[9]=w-(int)(r*Math.sin(45*fi/180));
y[10]=h+(int)(r*Math.sin(30*fi/180));
x[10]=w-(int)(r*Math.sin(60*fi/180));
y[11]=h+(int)(r*Math.sin(15*fi/180));
x[11]=w-(int)(r*Math.sin(75*fi/180));
y[12]=h;
x[12]=w-300;
y[13]=h-(int)(300*Math.sin(15*fi/180));
x[13]=w-(int)(300*Math.sin(75*fi/180));
y[14]=h-(int)(300*Math.sin(30*fi/180));
x[14]=w-(int)(300*Math.sin(60*fi/180));
y[15]=h-(int)(300*Math.sin(45*fi/180));
x[15]=w-(int)(300*Math.sin(45*fi/180));
y[16]=h-(int)(300*Math.sin(60*fi/180));
x[16]=w-(int)(300*Math.sin(30*fi/180));
y[17]=h-(int)(300*Math.sin(75*fi/180));
x[17]=w-(int)(300*Math.sin(15*fi/180));
y[18]=h-300;
x[18]=w;
y[19]=h-(int)(300*Math.sin(75*fi/180));
x[19]=w+(int)(300*Math.sin(15*fi/180));
y[20]=h-(int)(300*Math.sin(60*fi/180));
x[20]=w+(int)(300*Math.sin(30*fi/180));
y[21]=h-(int)(300*Math.sin(45*fi/180));
x[21]=w+(int)(300*Math.sin(45*fi/180));
y[22]=h-(int)(300*Math.sin(30*fi/180));
x[22]=w+(int)(300*Math.sin(60*fi/180));
y[23]=h-(int)(300*Math.sin(15*fi/180));
x[23]=w+(int)(300*Math.sin(75*fi/180));
// b=a+b;
vector1.add(a);
vector2.add(b);
vector3.add(e);
vector4.add(f);
a=a+b;
e=e+f;
c=vector1.size();
g=vector3.size();
Path[] path1=new Path[30];
for(int i=0;i<c;i++)
{
paint.setColor(Color.BLACK);
canvas.drawArc(rectF,vector1.get(i),vector2.get(i),true,paint);
}
for(int i=0;i<g;i++) {
paint.setColor(Color.WHITE);
path1[i] = new Path();
path1[i].moveTo(x[vector3.get(i)], y[vector3.get(i)]);
path1[i].lineTo(w, h);
paint.setTextSize(30);
canvas.drawTextOnPath(s, path1[i], 0, 0, paint);
}
}
}
public class MainActivity extends AppCompatActivity {
int d=0,e=0,f=0;
EditText editText;
int width,height;
stay1 stay1;
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sub);
editText=(EditText)findViewById(R.id.editText);
width = getWindowManager().getDefaultDisplay().getWidth();
height = getWindowManager().getDefaultDisplay().getHeight();
textView=(TextView)findViewById(R.id.textView3);
stay1=(stay1)findViewById(R.id.view);
}
public void on1(View v)
{
stay1.s=editText.getText().toString();
stay1.b=d;
stay1.f=e;
// String s=editText.getText().toString();
// int c=Integer.parseInt("12");
stay1.invalidate();
}
public void on2(View v)
{
d+=15;
e+=1;
f++;
textView.setText(f+"시간");
}
public void on3(View v)
{
d-=15;
e-=1;
f--;
textView.setText(f+"시간");
}
public void on4(View v)
{
stay1.vector1.clear();
stay1.vector2.clear();
stay1.vector3.clear();
stay1.vector4.clear();
f=0;
stay1.invalidate();
}
}
텍스트를 입력할 때 invalidate가 호출되서 계속 부채꼴이 그려짐. 텍스트를 입력할 때 invalidate를 호출한 적은 없음
PC에서는 텍스트 입력할 때 invalidate가 호출 안 되서 잘 되는데 핸드폰에서만 계속 invalidate가 호출됨
왜 그런지 모르겠어요
그리고
clear를 이용해서 reset을 하려는데 전부다 리셋이 되지 않고 하나만 남고 리셋이 되지 않아요.
제가 원하는 건 전부다 리셋이 되는 거에요 어떻게 해야하는지 모르겠어요. 벡터를 하나하나 나누어 그런건가요? 벡터 사용법이 잘못 된건가요?