Ú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
- Vivo X300 - kicsiben jobban megéri
- Kedvenc zene a mai napra
- A CannonKeys felkavarja a slim profilos billentyűzetek állóvizét
- Lexus, Toyota topik
- Allegro vélemények - tapasztalatok
- Okos Otthon / Smart Home
- iPhone topik
- Egy picit olcsóbb lesz a Google Pixel 10a
- Havi előfizetéses csomagot kínál az Apple kreatív munkákhoz
- Battlefield 6
- További aktív témák...
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest

