在我的活动中,我只有一个ImageView。其中src是一张比屏幕大得多的图片。我想让图片从左到右缓慢滚动,直到达到照片的右边缘,然后开始向左滚动,直到达到左边缘。然后重新开始。
我需要它在一个单独的线程中发生,以便手机在此过程中不会冻结。
如何实现这一点?
是否有默认情况下可以完成此操作的小部件?
更新代码
//布局:
但是它会偏移图片。 我的意思是,滚动条从左向右滚动,“推”着图片向左,并显示白色背景在ImageView下面。
另外,这应该放在一个线程中吗?我需要能够以某种方式退出此“滚动”活动,而不使用返回按钮。我想在ImageView顶部放置一个按钮(按钮应保持静止),并单击它应启动另一个Intent。
似乎ImageView内的图片被裁剪以适应屏幕。如何解决这个问题?
![这就是我所需要的](https://istack.dev59.com/5z7jX.webp)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mylinear"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<ImageView
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="center"
android:src="@drawable/rainforest" />
</RelativeLayout>
//和活动
public class MainActivity extends Activity {
Animation _translateAnimation;
RelativeLayout _relativeLoading = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
_translateAnimation = new TranslateAnimation(TranslateAnimation.ABSOLUTE, 0f, TranslateAnimation.ABSOLUTE, -100f, TranslateAnimation.ABSOLUTE, 0f, TranslateAnimation.ABSOLUTE, 0f);
_translateAnimation.setDuration(5000);
_translateAnimation.setRepeatCount(-1);
_translateAnimation.setRepeatMode(Animation.REVERSE); // REVERSE
_translateAnimation.setInterpolator(new LinearInterpolator());
_relativeLoading = (RelativeLayout) findViewById(R.id.mylinear);
_relativeLoading.startAnimation(_translateAnimation);
}
但是它会偏移图片。 我的意思是,滚动条从左向右滚动,“推”着图片向左,并显示白色背景在ImageView下面。
另外,这应该放在一个线程中吗?我需要能够以某种方式退出此“滚动”活动,而不使用返回按钮。我想在ImageView顶部放置一个按钮(按钮应保持静止),并单击它应启动另一个Intent。
似乎ImageView内的图片被裁剪以适应屏幕。如何解决这个问题?