在 Android 上可以不用工具栏来制作视差效果吗?
Could be possible to make Parallax effect without ToolBar on Android?
我找了很长时间(也在寻找第三方库)来制作某种 "Parallax" 但没有 Toolbar
,我所看到的只是使用 Toolbar
,但这不符合我的最大利益,因为我删除了整个应用程序的 Toolbar
。
我遵循了这个例子:https://www.youtube.com/watch?v=HO82ES_RiSQ 但它并没有说服我...
有人可以解决这个问题吗?我想知道如何在不使用 Toolbar
的情况下进行视差
提前致谢
只需三步即可完成:)
- 将
compile 'com.github.ksoichiro:android-observablescrollview:1.6.0'
添加到 build.gradle 中的依赖项 (project on github)
使用 ImageView、可滚动内容和 ObservableScrollView 作为容器创建布局。
activity_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<com.github.ksoichiro.android.observablescrollview.ObservableScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/observable_scrollview"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/image_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:src="@drawable/example" />
<View
android:id="@+id/your_content"
android:layout_width="wrap_content"
android:layout_height="600dp"
android:background="@android:color/black" />
</LinearLayout>
</com.github.ksoichiro.android.observablescrollview.ObservableScrollView>
在您的 ObservableScrollView 中设置 ObservableScrollViewCallbacks 并在 onScrollChange 方法中将您的 ImageView 在 y 轴上平移
public class MainActivity extends AppCompatActivity implements ObservableScrollViewCallbacks {
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_layout);
ObservableScrollView observableScrollView = (ObservableScrollView) findViewById(R.id.observable_scrollview);
observableScrollView.setScrollViewCallbacks(this);
imageView = (ImageView) findViewById(R.id.image_view);
}
@Override
public void onScrollChanged(int scrollY, boolean firstScroll, boolean dragging) {
imageView.setTranslationY(scrollY / 2);
}
}
非常重要的是 imageView.setTranslationY(scrollY / 2); 这意味着您的 ImageView 滚动速度比滚动内容慢两倍。
这是它的样子:
我找了很长时间(也在寻找第三方库)来制作某种 "Parallax" 但没有 Toolbar
,我所看到的只是使用 Toolbar
,但这不符合我的最大利益,因为我删除了整个应用程序的 Toolbar
。
我遵循了这个例子:https://www.youtube.com/watch?v=HO82ES_RiSQ 但它并没有说服我...
有人可以解决这个问题吗?我想知道如何在不使用 Toolbar
提前致谢
只需三步即可完成:)
- 将
compile 'com.github.ksoichiro:android-observablescrollview:1.6.0'
添加到 build.gradle 中的依赖项 (project on github) 使用 ImageView、可滚动内容和 ObservableScrollView 作为容器创建布局。
activity_layout.xml
<?xml version="1.0" encoding="utf-8"?> <com.github.ksoichiro.android.observablescrollview.ObservableScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/observable_scrollview" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:orientation="vertical"> <ImageView android:id="@+id/image_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:adjustViewBounds="true" android:src="@drawable/example" /> <View android:id="@+id/your_content" android:layout_width="wrap_content" android:layout_height="600dp" android:background="@android:color/black" /> </LinearLayout> </com.github.ksoichiro.android.observablescrollview.ObservableScrollView>
在您的 ObservableScrollView 中设置 ObservableScrollViewCallbacks 并在 onScrollChange 方法中将您的 ImageView 在 y 轴上平移
public class MainActivity extends AppCompatActivity implements ObservableScrollViewCallbacks { private ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_layout); ObservableScrollView observableScrollView = (ObservableScrollView) findViewById(R.id.observable_scrollview); observableScrollView.setScrollViewCallbacks(this); imageView = (ImageView) findViewById(R.id.image_view); } @Override public void onScrollChanged(int scrollY, boolean firstScroll, boolean dragging) { imageView.setTranslationY(scrollY / 2); } }
非常重要的是 imageView.setTranslationY(scrollY / 2); 这意味着您的 ImageView 滚动速度比滚动内容慢两倍。
这是它的样子: