Új hozzászólás Aktív témák
-
heihachi
addikt
Sziasztok!
Szeretnék egy parallax scroll effektet létrehozni, ahol a háttér, mondjuk egy kép más sebességgel gördül, mint az előtte lévő szöveg. Ezzel meg is volnék, ezt úgy értem el, hogy a layoutban egy framelayout van, azon belül két saját, scrollview-ból származtatott saját view.
<FrameLayout 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:paddingBottom="@dimen/null_dp"
android:paddingLeft="@dimen/null_dp"
android:paddingRight="@dimen/null_dp"
android:paddingTop="@dimen/null_dp"
tools:context="com.example.simpletestproject.ParaScroll" >
<com.example.simpletestproject.MyScrollView
android:id="@+id/background_scroll"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scrollbars="none" >
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:scaleType="center"
android:src="@drawable/kek_atmenet" />
</com.example.simpletestproject.MyScrollView>
<com.example.simpletestproject.MyScrollView
android:id="@+id/foreground_scroll"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:overScrollMode="always" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/lorem_ipsum"
android:textColor="@color/white" />
</com.example.simpletestproject.MyScrollView>
</FrameLayout>A scrollview leszármazottja sincs túlbonyolítva:
package com.example.simpletestproject;
import android.content.Context;
import android.graphics.Matrix;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.ScrollView;
public class MyScrollView extends ScrollView {
public MyScrollView synchronizedScrollView;
public String name = "default";
public MyScrollView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public MyScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public MyScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
// TODO Auto-generated constructor stub
}
public MyScrollView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
// TODO Auto-generated constructor stub
}
public boolean onTouchEvent(MotionEvent event) {
boolean synchronizedScrollViewReturn = true;
boolean scrollViewReturn = super.onTouchEvent(event);
if (synchronizedScrollView != null) {
Matrix matrix = new Matrix();
matrix.setScale(0.5f, 0.5f);
event.transform(matrix);
synchronizedScrollViewReturn = synchronizedScrollView.onTouchEvent(event);
}
return synchronizedScrollViewReturn && scrollViewReturn;
}
}A synchronizedScrollView a háttér scrollview, megkapja az is az érintés információkat, és mozog az is.
Ez tök jól működik, a háttér más sebességgel szkrollozódik, mint az előtér, csak a gondom az, hogy jó lenne ezeket egymáshoz igazítani, hogy egyszerre érjenek a tetejére és az aljára. Nem lenne ez bonyolult, mert a méretarányok alapján a mátrixot amit skálázásra használok simán be lehetne lőni. Csakhogy képtelen vagyok megmérni a view-k méretét, akármit próbálok baromságok jönnek vissza. Az 1600 pixeles háttérre 2133, a rohadtul hosszú szövegre, ami vagy 10 képernyő meg 38 pl, és képtelen vagyok felfogni, hogy hogyan kellene megoldani.
Volna valami ötletetek?
Új hozzászólás Aktív témák
- Apple watch SE 3 2025 40mm Starlight ÚJ 1 év Apple jótállás
- Seagate Barracuda 8TB SATA3
- ÚJ, KOMPAKT GAMER PC - RYZEN 5 5600, RX 9060 XT 16GB, 32GB RAM, 1TB NVME SSD
- Apple iPhone 14 Pro Max 256GB,Újszerű,Dobozaval,12 hónap garanciával
- Apple MacBook Air M3 15 256GB,Újszerű,Dobozaval,24 hónap garanciával
- Samsung Galaxy Z flip 5 512GB,Újszerű,Adatkabel,12 hónap garanciával
- ÁRGARANCIA!Épített KomPhone i5 12400F 16/32/64GB RAM RX 9060 XT 8GB GAMER PC termékbeszámítással
- Oneplus 9 128GB,Átlagos,Adatkabel,12 hónap garanciával
- Apple iMac 24" Blue! M3 / 16GB RAM / 512GB SSD!
- KÉK! -20%!!! MACBOOK NEO!!!! - MAGYAR BILLES! - KÉK!
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

