package tori.test.viewtest;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.drawable.ShapeDrawable;
import android.graphics.drawable.shapes.RectShape;
import android.os.Bundle;
import android.view.View;
import android.widget.ScrollView;
import android.widget.Toast;
public class ViewTest extends Activity {
static Integer height;
static Integer width;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//get height and width of screen
height = this.getResources().getDisplayMetrics().heightPixels;
width = this.getResources().getDisplayMetrics().widthPixels;
//create views
ScrollView sv = new ScrollView(this);
CustomView cv = new CustomView(this);
//add custom view with drawn rectangle to scrollview
sv.addView(cv);
//set content view as scrollview
setContentView(sv);
CharSequence output = height.toString() + "..." + width.toString();
Toast.makeText(getApplicationContext(), output, Toast.LENGTH_SHORT)
.show();
}
private static class CustomView extends View {
public CustomView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
protected void onDraw(Canvas canvas) {
ShapeDrawable rect = new ShapeDrawable(new RectShape());
rect.getPaint().setColor(0xFFFF0000);
rect.setBounds(50, 50, width - 100, height - 100);
rect.draw(canvas);
}
}
}
왜그럴까요??스크롤 없이는 CustomView가 잘나오거든요..ㅠㅠ
신입 개발자입니다. ~
CustomView를 띄우는거 까지는 성공했네요~
문제가 생겼습니다. 넣으려는 CustomView는 위와다르게 터치이벤트를 받아서 그리는 view인데
scrollView를 활성화시키면 CustomVIew에 이벤트가 들어가지 않네요
scrollView를 비활성화시켜도 CustomView에 스크롤과 같은 방향 Action_Move이벤트가 일어나지 않네요
ㅠㅠ
제가 원하는 이벤트는 일정길이의 Action_Move가 일어나면 ScrollView가 활성화되고 아니면 CustomView이벤트만 일어났으면 좋켔는데.ㅠ




private static class CustomView extends View {
public CustomView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
protected void onDraw(Canvas canvas) {
ShapeDrawable rect = new ShapeDrawable(new RectShape());
rect.getPaint().setColor(0xFFFF0000);
rect.setBounds(50, 50, width - 100, height - 100);
rect.draw(canvas);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// 300 means that our View must have minimum height=300. Defind your value for height.
super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(300, MeasureSpec.EXACTLY));
}
}
CustomView 안에 onMeasure(int widthMeasureSpec, int heightMeasureSpec) 메서드를 를 추가하시면 보일 거예요~.ㅋ
구글 검색으로 찾아냈내요ㅋㅋ