2014-08-28 2 views
1

У меня возникли проблемы с поиском решения, которое преобразует ImageView из центра RelativeLayout таким образом, что верхний левый угол этого ImageView остается в верхнем левом углу макета , Большинство вариантов переводятся, имея центр ImageView в качестве ссылки и/или не работает на всех размерах экрана.Перевод ImageView в левый верхний угол

Вот лучший вариант до сих пор, за исключением того факта, что центр ImageView остается в верхнем левом углу (0,0) расположение:

TranslateAnimation anim = new TranslateAnimation(
    TranslateAnimation.RELATIVE_TO_PARENT,0.0f, 
    TranslateAnimation.RELATIVE_TO_PARENT,-0.5f, 
    TranslateAnimation.RELATIVE_TO_PARENT,0.0f, 
    TranslateAnimation.RELATIVE_TO_PARENT,-0.5f 
); 
anim.setFillAfter(true); 
anim.setDuration(1000); 

image.startAnimation(anim); 

ответ

2

Вы можете попробовать с TranslateAnimation.ABSOLUTE. С помощью этого вы можете более точно рассчитать значения дельты.

RelativeLayout relativeLayout = (RelativeLayout) findViewById(<R.id of your relative layout id>); 
ImageView imageView = (ImageView) findViewById(<R.id of your image view id>); 

int deltaX = (relativeLayout.getWidth()/2) - (imageView.getWidth()/2); 
int deltaY = (relativeLayout.getHeight()/2) - (imageView.getHeight()/2); 

TranslateAnimation anim = new TranslateAnimation(
    TranslateAnimation.ABSOLUTE, 0.0f, 
    TranslateAnimation.ABSOLUTE, -deltaX, 
    TranslateAnimation.ABSOLUTE, 0.0f, 
    TranslateAnimation.ABSOLUTE, -deltaY 
); 
anim.setFillAfter(true); 
anim.setDuration(1000); 

image.startAnimation(anim);