2012-07-05 6 views
1

는 나는이 지금까지 내 코드 전체 화면 맞도록 안드로이드에 사각형을 확장 할 수 있도록하려면 : 공용 클래스 MAINVIEW보기를 확장을 {안드로이드에서 rect를 축척하는 방법은 무엇입니까?

private Main main; 
private Rect facebook_rect; 

public MainView(Context context){ 
    super(context); 
    this.main = (Main) context; 
    setFocusable(true); 
    setFocusableInTouchMode(true); 
} 

@Override 
protected void onDraw(Canvas canvas){ 
    Paint background = new Paint(); 
    background.setColor(getResources().getColor(R.color.main_background)); 
    canvas.drawRect(0, 0, getWidth(), getHeight(), background); 

    Paint facebookPaint = new Paint(); 
    facebook_rect = new Rect(0,0,getWidth(),getHeight()/5); 
    facebookPaint.setColor(getResources().getColor(R.color.facebook_color)); 
    canvas.drawRect(facebook_rect,facebookPaint); 
} 

@Override 
public boolean onTouchEvent(MotionEvent event){ 
    if(event.getAction()!=MotionEvent.ACTION_DOWN) 
     return super.onTouchEvent(event); 
    animate("facebook"); 

    return true; 
} 

private void animate(String string) { 
    Animation anim = AnimationUtils.loadAnimation(main, R.anim.scale_anim_1stpos); 
    facebook_rect.startAnimation(anim); 

} 
} 

그러나이 "facebook_rect.startAnimation (ANIM) ; " 작동하지 않습니다 ...이 작업을 수행하는 방법에 대한 아이디어?

편집 : 나는 또한 내 ANIM XML 파일로이이

<?xml version="1.0" encoding="utf-8"?> 
<scale xmlns:android="http://schemas.android.com/apk/res/android" 
     android:fromYScale="1.0" android:toYScale="3.0" 
     android:pivotX="0" 
     android:pivotY="0" 
     android:interpolator="@android:anim/linear_interpolator" 
     android:duration="700" android:fillAfter="true" > 
</scale> 

내가 달성하기 위해 노력하고있어 효과는 단지 경우 통장 애플의 새로운 티켓 응용 프로그램 같은 것을 어떻게 그것을 할 수있는 더 좋은 생각을 가지고 . 감사!

답변

1

당신이 뭔가를 확장 할 경우 사용할 수 있습니다 canvas.scale(scaleFactor, scaleFactor);

첫 번째 스케일 팩터을 애니메이션의 경우는 X로 확장 할 금액와 Y

에서 두 번째로 양입니다 이 link을 보면 어쩌면 도움이 될지도 모릅니다.

2

먼저 그리기 기능

canvas.drawRect(left-20*scale, top-20*scale, right+20*scale, bottom, mPaint); 
를 사용하여 찾을 sceeen 치수를 스케일 팩터

float scale = displayMetrics.densityDpi; 

다음 스케일 캔버스

DisplayMetrics displayMetrics = new DisplayMetrics();  
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); 

다음을

관련 문제