Vista de imagen de Android Autoscroll
En mi actividad sólo tengo un ImageView. En él, el src es una imagen que es mucho más grande que la pantalla. Quiero que la imagen se desplace slooooowly de izquierda a derecha hasta que alcanza el margen derecho de la foto, a continuación, comenzar a desplazarse hacia atrás hacia la izquierda hasta el margen izquierdo alcanzado. Entonces empieza de nuevo. Necesito que suceda en un hilo separado por lo que el teléfono no se congele mientras esto sucede.
¿Cómo puedo conseguir esto? ¿Hay un widget que hace esto por defecto?
- Controlar la visibilidad de la vista desde un recurso
- Rotación a un ImageView, dentro de un RelativeLayout
- Cargar imágenes en GridView con Universal Image Loader
- Cómo saber si Ver dentro de Desplazamiento es visible completamente o no
- ImageView no escala en dispositivos de pantalla grande
CÓDIGO ACTUALIZADO // diseño:
<?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>
// y Actividad
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); }
Pero se va de la imagen. Quiero decir, el rollo va de izquierda a derecha, "empujando" la imagen a la izquierda y mostrando el fondo blanco debajo del ImageView.
-
Además, ¿debería estar dentro de un hilo o algo así? Necesito poder salir de esta actividad de "desplazamiento" de alguna manera, sin usar el botón Atrás. Quiero un botón en la parte superior de la ImageView (el botón debe quedarse quieto) y onClick debe iniciar otro Intent
-
Parece que la imagen dentro de ImageView está recortada para encajar dentro de la pantalla. ¿Cómo puedo superar esto?
- SetShadowLayer provoca lento tiempo de dibujo en GridView?
- ImageView dentro de RelativeLayout tiene relleno superior e inferior
- Establecer una imagen en el elemento ListView utilizando SimpleCursorAdapter y ViewBinder
- Creación de una vista de imagen dibujable y zoomable en android
- ¿Cómo obtienes efecto de rizo para extender los límites de vista pasados?
- Cómo reasignar una imagen de 9 parches mediante programación a un ImageView?
- Diferencia entre setAlpha y setImageAlpha
- Implementar android: src = "@ drawable / image" mediante programación en Android
Ejemplo:
private Animation _translateAnimation; private ImageView _image; _image = (ImageView)findViewById(R.id.yourimage); _translateAnimation = new TranslateAnimation(TranslateAnimation.ABSOLUTE, 0f, TranslateAnimation.ABSOLUTE, 100f, TranslateAnimation.ABSOLUTE, 0f, TranslateAnimation.ABSOLUTE, 0f); _translateAnimation.setDuration(10000); _translateAnimation.setRepeatCount(-1); _translateAnimation.setRepeatMode(Animation.REVERSE); _translateAnimation.setInterpolator(new LinearInterpolator()); _image.setAnimation(_translateAnimation);
Esto hará que _linearLoading traducir lentamente a la derecha ya la izquierda y derecha e izquierda …
Más duración = más lentamente
TranslateAnimation.ABSOLUTE = Trabaja con la posición de la imagen TranslateAnimation.RELATIVE_TO_PARENT = Trabaja con el diseño de los padres …
El método TranslateAnimation (start x, end x, start y, end y)
Jugar con eso
Por lo tanto, la solución a mi problema está aquí (para todos los nuevos desarrolladores de Android, como yo, que podría necesitar esto para sus aplicaciones):
public class MainActivity extends Activity { Animation _translateAnimation; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); _translateAnimation = new TranslateAnimation(TranslateAnimation.ABSOLUTE, 0f, TranslateAnimation.ABSOLUTE, -300f, TranslateAnimation.ABSOLUTE, 0f, TranslateAnimation.ABSOLUTE, 0f); _translateAnimation.setDuration(8000); _translateAnimation.setRepeatCount(-1); _translateAnimation.setRepeatMode(Animation.REVERSE); // REVERSE _translateAnimation.setInterpolator(new LinearInterpolator()); ImageView img = (ImageView) findViewById(R.id.img); img.startAnimation(_translateAnimation); } }
Y el diseño:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/global_relative" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" android:orientation="vertical" > <ScrollView android:layout_width="fill_parent" android:layout_height="wrap_content" > <ImageView android:id="@+id/img" android:layout_width="600dp" android:layout_height="wrap_content" android:adjustViewBounds="true" android:background="@drawable/rainforest" android:scaleType="center" android:src="@drawable/rainforest613x490" > </ImageView> </ScrollView> </RelativeLayout>
Sólo asegúrese de que su imagen es lo suficientemente grande / alto como para ajustar la pantalla, y es (+ 300dp) más ancho que el ancho de la pantalla (o ajustar el código anterior).
Codificación feliz;)
Lo que podría hacer es añadir ImageView dentro de ScrollView. Me gusta esto
<ScrollView android:id="@+id/img_scroll" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/IMAGENAME" /> </ScrollView>
Como desea desplazar la imagen automáticamente, puede crear un método AsyncTask y dentro del método doInBackground (), crear un new Runnable
o runOnUiThread()
y enviar comandos al ScrollView utilizando su ID para desplazarse a medida que lo necesite.
- Elemento de vista de lista de Android que no muestra el color seleccionado
- Twitter Inicio de sesión Error de diálogo