1

im работает в приложении, у которого есть 2 изображения 1-й слева, а другой справа ... когда страница загружается, изображение просматривается, и оно переходит в центр экрана. т.е.Перемещение ImageView в центр экрана в android

ImageView --------> центр < ---------- ImageView

им с помощью перевода анимации для перемещения изображения, которые принимают 4 параметра

т.е.

TranslateAnimation (float fromXDelta, float toXDelta, float fromYDelta, float toYDelta) 

но проблема нет ничего отображается ..

мой XML файл является

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:id="@+id/topRelativeLayout" > 

<LinearLayout 
    android:id="@+id/centerLayout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_centerVertical="true" 
    android:orientation="vertical" > 

    <ImageView 
     android:id="@+id/imageView_header" 
     android:layout_width="150dp" 
     android:layout_height="80dp" 
     android:layout_gravity="left" 
     android:layout_marginTop="80dp" 
     android:src="@drawable/logo_footer" /> 
    <ImageView 
     android:id="@+id/imageView_footer" 
     android:layout_width="150dp" 
     android:layout_height="80dp" 
     android:layout_gravity="right" 
     android:layout_marginTop="30dp" 
     android:src="@drawable/logo_header" /> 
</LinearLayout> </RelativeLayout> 

Мой Applicationn О CreateView кода Java является

DisplayMetrics displaymetrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
    int height = displaymetrics.heightPixels; 
    int width = displaymetrics.widthPixels; 


    Log.d("Screen Width",String.valueOf(width)); 
    Log.d("Screen Height",String.valueOf(height)); 
    Log.d("Screen Half Width",String.valueOf(width/2)); 
    Log.d("Screen HalHeight",String.valueOf(height/2)); 

    header=(ImageView)findViewById(R.id.imageView_header); 
    moveImageToLeftToCenter(header,height,width); 
    footer=(ImageView)findViewById(R.id.imageView_footer); 
    moveImageToRightToCenter(footer,height,width); 

и код функции

public void moveImageToLeftToCenter(ImageView img, int height, int width){ 

    TranslateAnimation anim = new TranslateAnimation(0, width/2,height/2,height/2);// - originalPos[0] , 0, yDest - originalPos[1]); 
    anim.setDuration(3000); 
    anim.setFillAfter(true); 
    img.startAnimation(anim); 
    } 

public void moveImageToRightToCenter(ImageView img,int height, int width){ 

    TranslateAnimation anim = new TranslateAnimation(width/2, 0,height/2,height/2);// - originalPos[0] , 0, yDest - originalPos[1]); 
    anim.setDuration(3000); 
    anim.setFillAfter(true); 
    img.startAnimation(anim); 
} 

Мои LogCat значения

05-11 11:27:33.762: D/Screen Width(4090): 1152 
05-11 11:27:33.762: D/Screen Height(4090): 672 
05-11 11:27:33.762: D/Screen Half Width(4090): 576 
05-11 11:27:33.762: D/Screen HalHeight(4090): 336 

я не могу понять, что это problem..if Кто-нибудь знает, чем мне помочь .... заранее спасибо друзей

+0

Посмотреть это изображение на экране? но он не двигается? – KOTIOS

+0

можете ли вы попробовать добавить anim.setFillEnabled (true); после setFillAfter call. – denizt

+0

Nope @ N5. imageview также не отображается ...... – Tufan

ответ

2

Я также сделал что-то подобное, и я смогу это сделать в onWindowsFocusChanged. Код ниже, я знаю, что вы уже пробовали, но, может быть, вы можете найти что-то полезное от него.

@Override 
public void onWindowFocusChanged(boolean hasFocus) { 
    // TODO Auto-generated method stub 
    super.onWindowFocusChanged(hasFocus); 
    AnimationSet set = new AnimationSet(true); 

    Animation fadeIn = FadeIn(3000); 
    fadeIn.setStartOffset(0); 
    set.addAnimation(fadeIn); 

    RelativeLayout root = (RelativeLayout) findViewById(R.id.splashLayout); 
    DisplayMetrics dm = new DisplayMetrics(); 
    this.getWindowManager().getDefaultDisplay().getMetrics(dm); 
    int statusBarOffset = dm.heightPixels - root.getMeasuredHeight(); 

    int originalPos[] = new int[2]; 
    splashImage.getLocationOnScreen(originalPos); 

    int xDest = dm.widthPixels/2; 
    xDest -= (splashImage.getMeasuredWidth()/2); 
    int yDest = dm.heightPixels/2 - (splashImage.getMeasuredHeight()/2) 
      - statusBarOffset; 

    TranslateAnimation anim = new TranslateAnimation(0, xDest 
      - originalPos[0], 0, yDest - originalPos[1]); 
    anim.setDuration(3000); 
    set.addAnimation(anim); 

    Animation fadeOut = FadeOut(1000); 
    fadeOut.setStartOffset(3000); 
    set.addAnimation(fadeOut); 

    set.setFillAfter(true); 
    set.setFillEnabled(true); 
    splashImage.startAnimation(set); 
} 

private Animation FadeIn(int t) { 
    Animation fade; 
    fade = new AlphaAnimation(0.0f, 1.0f); 
    fade.setDuration(t); 
    fade.setInterpolator(new AccelerateInterpolator()); 
    return fade; 
} 

private Animation FadeOut(int t) { 
    Animation fade; 
    fade = new AlphaAnimation(1.0f, 0.1f); 
    fade.setDuration(t); 
    fade.setInterpolator(new AccelerateInterpolator()); 
    return fade; 
} 

Вот что я пытался сделать это, переместить выплеск изображения с определенной позиции на несколько ниже, применяя набор анимации на изображении. Здесь FadeIn и FadeOut - это просто анимация для изменения альфы изображения, поэтому вам просто нужно предоставить свою анимацию анимации.

Надеюсь, вам это поможет.

С уважением,

+0

Можете ли вы опубликовать также, что такое fadein и fadeout, он говорит мне метод undefined – Tufan

+0

Я добавляю их в сообщение @Tufan, вы можете проверить. – denizt

+0

thx bro @denizt не по крайней мере он движется, но вы можете сказать мне, что я должен делать в своем коде, чтобы он проходил только до центра – Tufan

0

Это может помочь вам, он работал для меня

public void moveImageToRightToCenter(ImageView img ,int screenWidth) 
    { 
     img.setTranslationX(screenWidth); 
     img.animate() 
       .translationX(0) 
       .setDuration(300) 
       .setStartDelay(300); 
    } 
+0

, согласно вам я сделал некоторые изменения в своем коде, но nthmg happend img.setTranslationX (width); img.animate() .translationX (ширина/2) .setDuration (300) .setStartDelay (300); – Tufan