我想要一個背景圖像和另一個向下移動到背景圖像上的圖像,當它到達底部時,它會停在那裏?我怎樣才能做到這一點。 「 」它可以與葉子在下降的街道圖像相同「在屏幕上顯示一個正在移動的圖像
2
A
回答
4
在底部創建一個佈局,並在該佈局中添加一個圖像視圖(保留圖像作爲此圖像視圖的背景圖像)並在佈局上應用翻譯動畫。在XML中,佈局不可見,並且在您的代碼中使其可見
您應該在您的XML中包含此代碼。將此佈局設置在底部並根據您的需要更改高度,寬度和可視性。記住UR活動SHD實施animationListner
<LinearLayout
android:id="@+id/linearLayout3"
android:layout_width="wrap_content"
android:layout_height="220dip"
android:orientation="vertical"
android:layout_marginTop="480dip"
>
<ImageView android:id="@+id/imageview"
android:layout_width ="wrap_content"
android:layout_height ="wrap_content"
android:visibility="invisible"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:background="@drawable/stoke1">
</ImageView>
</LinearLayout>
Java代碼是這樣的
Animation movement5;
layout3 = (LinearLayout) findViewById(R.id.linearLayout3);
movement5 = AnimationUtils.loadAnimation(this,R.layout.animation_test5);
movement5.reset();
movement5.setfillafter(true)
movement5.setAnimationListener(this);
layout3.startAnimation(movement5);
animation_test5.xml。
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0%" android:toXDelta="0%" android:fromYDelta="-300%"
android:toYDelta="100%" android:duration="3000" android:zAdjustment="normal" />
1
正常界面情況的最簡單的解決方法是將要移動的內容放入視圖並執行視圖動畫。具體來說,在視圖上創建並開始新的翻譯動畫。
這是通常用於在屏幕上爲界面對象設置動畫的技術。
1
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.drawable.BitmapDrawable;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.ScaleGestureDetector;
import android.view.View;
public class MyImageView extends View {
private static final int INVALID_POINTER_ID = -1;
private Drawable mImage;
private float mPosX;
private float mPosY;
private float mLastTouchX;
private float mLastTouchY;
private int mActivePointerId = INVALID_POINTER_ID;
private ScaleGestureDetector mScaleDetector;
private float mScaleFactor = 1.f;
public MyImageView(Context context) {
this(context, null, 0);
mImage=act.getResources().getDrawable(context.getResources().getIdentifier("imagename", "drawable", "packagename"));
mImage.setBounds(0, 0, mImage.getIntrinsicWidth(), mImage.getIntrinsicHeight());
}
public MyImageView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public MyImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
mScaleDetector = new ScaleGestureDetector(context, new ScaleListener());
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
// Let the ScaleGestureDetector inspect all events.
mScaleDetector.onTouchEvent(ev);
final int action = ev.getAction();
switch (action & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN: {
final float x = ev.getX();
final float y = ev.getY();
mLastTouchX = x;
mLastTouchY = y;
mActivePointerId = ev.getPointerId(0);
break;
}
case MotionEvent.ACTION_MOVE: {
final int pointerIndex = ev.findPointerIndex(mActivePointerId);
final float x = ev.getX(pointerIndex);
final float y = ev.getY(pointerIndex);
// Only move if the ScaleGestureDetector isn't processing a gesture.
if (!mScaleDetector.isInProgress()) {
final float dx = x - mLastTouchX;
final float dy = y - mLastTouchY;
mPosX += dx;
mPosY += dy;
invalidate();
}
mLastTouchX = x;
mLastTouchY = y;
break;
}
case MotionEvent.ACTION_UP: {
mActivePointerId = INVALID_POINTER_ID;
break;
}
case MotionEvent.ACTION_CANCEL: {
mActivePointerId = INVALID_POINTER_ID;
break;
}
case MotionEvent.ACTION_POINTER_UP: {
final int pointerIndex = (ev.getAction() & MotionEvent.ACTION_POINTER_INDEX_MASK)
>> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
final int pointerId = ev.getPointerId(pointerIndex);
if (pointerId == mActivePointerId) {
// This was our active pointer going up. Choose a new
// active pointer and adjust accordingly.
final int newPointerIndex = pointerIndex == 0 ? 1 : 0;
mLastTouchX = ev.getX(newPointerIndex);
mLastTouchY = ev.getY(newPointerIndex);
mActivePointerId = ev.getPointerId(newPointerIndex);
}
break;
}
}
return true;
}
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.save();
Log.d("DEBUG", "X: "+mPosX+" Y: "+mPosY);
canvas.translate(mPosX, mPosY);
canvas.scale(mScaleFactor, mScaleFactor);
mImage.draw(canvas);
canvas.restore();
}
private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
@Override
public boolean onScale(ScaleGestureDetector detector) {
mScaleFactor *= detector.getScaleFactor();
// Don't let the object get too small or too large.
mScaleFactor = Math.max(0.1f, Math.min(mScaleFactor, 10.0f));
invalidate();
return true;
}
}
}
修改代碼一定會做你的工作
相關問題
- 1. 在屏幕上移動圖像
- 2. 在屏幕IOS上移動圖像?
- 3. 如何在屏幕上移動圖像?
- 4. 在android中的屏幕上移動一個圖像按鈕
- 5. JLabel在屏幕上不顯示圖像
- 6. 原始圖像在屏幕上顯示
- 7. iOS - 一些圖像沒有在啓動屏幕上顯示
- 8. 在屏幕上移動一個小圖像
- 9. 在屏幕上顯示從上到下移動的圖像的最佳策略?
- 10. 在android中移動圖像部分在屏幕上移動
- 11. JS在屏幕上移動圖像並在末尾加載另一個圖像
- 12. Android Glide圖像不顯示在第一個屏幕上
- 13. 與動畫在屏幕上的JavaScript顯示圖像
- 14. 使圖像在Python中移動屏幕
- 15. 停止圖像屏幕上移動
- 16. Android TranslateAnimation - 將屏幕右側的圖像移動到屏幕上
- 17. 如何在整個屏幕上平滑地移動圖像Android
- 18. 背景圖像 - 移動視圖completedly顯示相同寬屏幕
- 19. 在Android上一次在UI屏幕上顯示20個隨機圖像
- 20. 圖像在小屏幕上的導航欄上移動
- 21. 如何在Android上的屏幕上移動圖像
- 22. 滾動android屏幕上的圖像屏幕上的圖像
- 23. 試圖使用jquery在屏幕上移動我的圖像
- 24. 如何在每個設備屏幕的一半顯示圖像?
- 25. 在移動屏幕上獲取可移動屏幕上的可見部分(放大圖像),在HTML中
- 26. Mosync:在另一個屏幕上顯示透明屏幕
- 27. 試圖上傳圖像,並讓它顯示在屏幕上
- 28. 如何在PsychoPy屏幕上顯示多個圖像?
- 29. 以表格形式在屏幕上顯示多個圖像 - Blackberry
- 30. 在屏幕上移動UIbutton
不過,如果你的感受很難隨意索要代碼:) – Randroid
請告訴我的代碼 – Geetanjali
@Geetanjali,我編輯我的答案。試試這個,讓我知道結果。 – Randroid