一学就困 2024-09-18 15:04 采纳率: 0%
浏览 6

android类似这样的滑动缩小标题到导航栏效果用什么实现?

img

img


上滑的时候,标题隐藏,导航栏显示一个小标题。下滑的时候恢复。

  • 写回答

1条回答 默认 最新

  • 一轮明月照丘壑 2024-09-18 18:00
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    为了在Android中创建一个类似滑动缩放标题到导航栏的效果,您可以使用ImageView控件配合LinearLayout布局管理器。下面是一个简单的示例,展示了如何处理这个功能:

    首先,在您的项目中添加必要的依赖项(如com.android.support.v7.widget.AppCompatImageView):

    <dependencies>
        <dependency>
            <groupId>com.android.support</groupId>
            <artifactId>support-v4</artifactId>
            <version>28.0.0</version>
        </dependency>
    
        <!-- 图片视图控件 -->
        <dependency>
            <groupId>com.android.support.constraint</groupId>
            <artifactId>constraint-layout</artifactId>
            <version>1.1.3</version>
        </dependency>
    </dependencies>
    

    然后,您可以在XML布局文件中定义一个LinearLayout作为容器,并设置一个AppCompatImageView用于展示标题:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:weightSum="5">
            
            <!-- 标题 -->
            <AppCompatImageView
                android:id="@+id/title_image_view"
                android:src="@drawable/your_title_image"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"/>
    
            <!-- 导航栏小标题 -->
            <TextView
                android:id="@+id/small_title_text_view"
                android:text="@string/small_title_text"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"/>
        </LinearLayout>
    
        <!-- 滑动区域 -->
        <FrameLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
    
    </LinearLayout>
    

    接下来,为标题图片添加点击事件监听器,以便在用户滑动手势时触发切换:

    public class MainActivity extends AppCompatActivity {
    
        private AppCompatImageView titleImage;
        private TextView smallTitleText;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            // 获取标题和小标题视图组件
            titleImage = findViewById(R.id.title_image_view);
            smallTitleText = findViewById(R.id.small_title_text_view);
    
            // 设置标题图片
            titleImage.setImageResource(R.drawable.your_title_image);
    
            // 添加滑动区域的FrameLayout
            FrameLayout frameLayout = findViewById(R.id.frame_layout);
    
            // 确保滑动区域始终可见
            frameLayout.setVisibility(View.VISIBLE);
    
            // 添加滑动监听器
            frameLayout.addOnScrollListener(new FrameLayout.OnScrollListener() {
                @Override
                public void onScrollStateChanged(ScrollView scrollView, int i) {
                    if (i == SCROLL_STATE_IDLE && frameLayout.getVisibility() == View.GONE) {
                        frameLayout.setVisibility(View.VISIBLE);
                    }
                }
    
                @Override
                public void onScrolled(ScrollView scrollView, int i, float v) {
                    if (frameLayout.getVisibility() != View.VISIBLE) {
                        frameLayout.setVisibility(View.GONE);
                    }
                }
            });
        }
    }
    

    在这个例子中,当用户滑动屏幕并使FrameLayout变为不可见时,标题图片会从其原始位置消失并重新显示到顶部。当用户再次滑动时,标题图片将恢复其原位。通过这种方式,您可以根据用户的滑动方向动态调整标题的位置。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月18日