Android开发中实现一个头像滑动变大变小功能-创新互联

这篇文章给大家介绍Android开发中实现一个头像滑动变大变小功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

创新互联是一家以网站设计建设,小程序设计、网站开发设计,网络软件产品开发,企业互联网推广服务为主的民营科技公司。主要业务涵盖:为客户提供网站策划、网站设计、网站开发、域名注册、网站优化排名、卖链接等服务领域。凭借建站老客户口碑做市场,建设网站时,根据市场搜索规律和搜索引擎的排名收录规律编程,全力为建站客户设计制作排名好的网站,深受老客户认可和赞誉。

实现

通过监听ScrollView在Y轴的滑动距离,然后在代码中动态设置头像的位置和大小。

public class MainActivity extends AppCompatActivity {

 private CircleImageView ivPortrait;
 private ObservableScrollView scrollView;

 private ViewGroup.MarginLayoutParams marginLayoutParams;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);

 initView();
 }

 private void initView() {
 ivPortrait = (CircleImageView) findViewById(R.id.iv_portrait);
 scrollView = (ObservableScrollView) findViewById(R.id.scrollView);

 marginLayoutParams = new ViewGroup.MarginLayoutParams(ivPortrait.getLayoutParams());

 scrollView.setScrollViewListener(new ObservableScrollView.ScrollViewListener() {
 @Override
 public void onScrollChanged(ObservableScrollView scrollView, int x, int y, int oldx, int oldy) {
 // 设置头像距离顶部的距离
 int top = dp2px(70) - y;
 if (top < dp2px(10)) {
  // 固定在标题栏
  marginLayoutParams.setMargins(dp2px(20), dp2px(10), 0, 0);
 } else {
  // 向上移动
  marginLayoutParams.setMargins(dp2px(20), dp2px(70) - y, 0, 0);
 }

 // 根据向上滑动的距离设置头像的大小
 FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(marginLayoutParams);
 // 头像大为45dp,最小为30dp
 int height = dp2px(45) - y < dp2px(30) ? dp2px(30) : dp2px(45) - y;
 layoutParams.height = height;
 layoutParams.width = height;
 ivPortrait.setLayoutParams(layoutParams);
 }
 });
 }

 private int dp2px(float dp) {
 return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp,
 getResources().getDisplayMetrics());
 }
}

网页标题:Android开发中实现一个头像滑动变大变小功能-创新互联
本文路径:http://myzitong.com/article/epjch.html