gpt4 book ai didi

java - 如何在 Android 的 ScrollView 中将图像锚定到 Imageview 的中心?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:04:20 25 4
gpt4 key购买 nike

当我在 Android ScrollView 中滚动时,它会按预期向下滚动。

但我希望 ImageView 中的图像锚定到中心。因此,当您向上滚动时,您总是会看到图像中人的脸。

到目前为止我还没能完成这个

在下图中创建了类似的效果:

enter image description here

Stockguy 图片:

enter image description here

到目前为止我的代码(到目前为止还没有实现):

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fillViewport="true"
android:scrollbars="none"
android:background="#FAFAFA"
android:id="@+id/cScrollview"
>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="1100dp"
tools:context=".MainActivity"
android:id="@+id/CRLayout">

<ImageView
android:layout_gravity="center"
android:adjustViewBounds="true"
android:layout_width="601dp"
android:layout_height="250dp"
android:paddingTop="0dp"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:scaleType="centerCrop"
android:id="@+id/contactPic"
android:src="@drawable/stockguy"/>

....


</RelativeLayout>
</ScrollView>

最佳答案

要实现像您发布的图像那样的视差效果,请尝试使用以下代码。这是一种非常简单的方法。

布局:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/scrollView"
android:layout_width="match_parent"
android:layout_height="match_parent">

<RelativeLayout
android:id="@+id/rlWrapper"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<ImageView
android:id="@+id/ivContactPhoto"
android:layout_width="match_parent"
android:layout_height="@dimen/contact_photo_height"
android:scaleType="centerCrop"
android:src="@drawable/stockguy" />

<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/contact_photo_height"
android:layout_marginTop="250dp">

<!-- Other Views -->

</LinearLayout>

</RelativeLayout>
</ScrollView>

LinearLayout 的上边距等于 ImageViews 的高度。

监听 ScrollView 的滚动位置和改变 ImageView 的位置:

@Override
protected void onCreate(Bundle savedInstanceState) {
<...>

mScrollView = (ScrollView) findViewById(R.id.scrollView);
mPhotoIV = (ImageView) findViewById(R.id.ivContactPhoto);
mWrapperRL = (RelativeLayout) findViewById(R.id.rlWrapper);

mScrollView.getViewTreeObserver().addOnScrollChangedListener(new ScrollPositionObserver());

<...>
}

private class ScrollPositionObserver implements ViewTreeObserver.OnScrollChangedListener {

private int mImageViewHeight;

public ScrollPositionObserver() {
mImageViewHeight = getResources().getDimensionPixelSize(R.dimen.contact_photo_height);
}

@Override
public void onScrollChanged() {
int scrollY = Math.min(Math.max(mScrollView.getScrollY(), 0), mImageViewHeight);

// changing position of ImageView
mPhotoIV.setTranslationY(scrollY / 2);

// alpha you can set to ActionBar background
float alpha = scrollY / (float) mImageViewHeight;
}
}

希望对您有所帮助。

关于java - 如何在 Android 的 ScrollView 中将图像锚定到 Imageview 的中心?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28043291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com