Android仿简书搜索框
一、引言
在移动应用开发中,用户界面(UI)设计是至关重要的一环,一个美观且用户友好的界面可以极大地提升用户体验和应用的吸引力,本文将探讨如何在Android平台上实现仿简书搜索框的效果,包括搜索栏伸展和收缩动画效果、顶部透明度渐变等关键功能。
二、搜索栏伸展和收缩动画效果实现
1、依赖引入:
要实现动画效果,需要引入Transition框架,在项目的build.gradle文件中添加以下依赖:
implementation 'com.android.support:design:25.3.1'
2、布局文件:
定义搜索框的布局文件search_layout.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/mSearchLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#FFFFFF" android:padding="10dp"> <EditText android:id="@+id/tvSearch" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="搜索简书的内容和朋友" android:maxLines="1" /> </RelativeLayout>
3、动画效果实现:
扩展状态:
private void expand() { tvSearch.setText("搜索简书的内容和朋友"); RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) mSearchLayout.getLayoutParams(); layoutParams.width = RelativeLayout.LayoutParams.MATCH_PARENT; layoutParams.setMargins(dip2px(10), dip2px(10), dip2px(10), dip2px(10)); mSearchLayout.setLayoutParams(layoutParams); beginDelayedTransition(mSearchLayout); }
收缩状态:
private void reduce() { tvSearch.setText("搜索"); RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) mSearchLayout.getLayoutParams(); layoutParams.width = dip2px(80); layoutParams.setMargins(dip2px(10), dip2px(10), dip2px(10), dip2px(10)); mSearchLayout.setLayoutParams(layoutParams); beginDelayedTransition(mSearchLayout); }
开始延迟过渡动画:
private void beginDelayedTransition(final ViewGroup view) { Transition transition = new AutoTransition(); transition.setDuration(300); TransitionManager.beginDelayedTransition(view, transition); }
三、搜索栏伸展和收缩的时机
为了控制搜索栏伸展和收缩的时机,需要监听ScrollView的滚动状态:
scrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() { @Override public void onScrollChanged() { changeToolbarAlpha(); if (scrollView.getScrollY() >= ivImg.getHeight() toolbar.getHeight() && !isExpand) { expand(); isExpand = true; } else if (scrollView.getScrollY() <= 0 && isExpand) { reduce(); isExpand = false; } } });
四、顶部透明度的渐变
实现顶部透明度渐变的方法如下:
private void changeToolbarAlpha() { int scrollY = scrollView.getScrollY(); if (scrollY < 0) { toolbar.getBackground().mutate().setAlpha(0); return; } float ratio = Math.min(1, scrollY / (ivImg.getHeight() toolbar.getHeight())); toolbar.getBackground().mutate().setAlpha((int) (ratio * 0xFF)); }
注意,初始时需要将toolbar的背景设置为全透明:
toolbar.getBackground().mutate().setAlpha(0);
五、归纳
通过以上步骤,可以在Android应用中实现仿简书搜索框的效果,包括搜索栏的伸展和收缩动画,以及顶部透明度的渐变,这些效果不仅提升了应用的视觉效果,还增强了用户体验,开发者可以根据具体需求进行调整和优化,以达到更好的效果。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1260821.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复