最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android仿京東金融首頁(yè)頭像效果

 更新時(shí)間:2017年02月06日 10:14:28   作者:容華謝后  
這篇文章主要為大家詳細(xì)介紹了Android 仿京東金融首頁(yè)頭像效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

1.介紹

看下效果圖,gif錄的有些卡頓,在真機(jī)上運(yùn)行效果很好。

2.實(shí)現(xiàn)

很有意思的一個(gè)效果,原理其實(shí)很簡(jiǎn)單,就是通過(guò)監(jiān)聽(tīng)ScrollView在Y軸的滑動(dòng)距離,然后在代碼中動(dòng)態(tài)設(shè)置頭像的位置和大小。

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) {
 // 設(shè)置頭像距離頂部的距離
 int top = dp2px(70) - y;
 if (top < dp2px(10)) {
  // 固定在標(biāo)題欄
  marginLayoutParams.setMargins(dp2px(20), dp2px(10), 0, 0);
 } else {
  // 向上移動(dòng)
  marginLayoutParams.setMargins(dp2px(20), dp2px(70) - y, 0, 0);
 }

 // 根據(jù)向上滑動(dòng)的距離設(shè)置頭像的大小
 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());
 }
}

布局文件

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:background="#FFF">

 <LinearLayout
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical">

 <RelativeLayout
 android:layout_width="match_parent"
 android:layout_height="50dp"
 android:background="#F2F4F7">

 ...

 </RelativeLayout>

 <com.yl.jdfinanceindex.ObservableScrollView
 android:id="@+id/scrollView"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:overScrollMode="never"
 android:scrollbars="none">

 <LinearLayout
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical">

 <RelativeLayout
  android:layout_width="match_parent"
  android:layout_height="80dp"
  android:background="#F2F4F7">

  ...

 </RelativeLayout>

 <View
  android:layout_width="match_parent"
  android:layout_height="1000dp" />

 </LinearLayout>

 </com.yl.jdfinanceindex.ObservableScrollView>

 </LinearLayout>

 <com.yl.jdfinanceindex.CircleImageView
 android:id="@+id/iv_portrait"
 android:layout_width="45dp"
 android:layout_height="45dp"
 android:layout_marginLeft="20dp"
 android:layout_marginTop="70dp"
 android:src="@mipmap/ic_portrait" />

</FrameLayout>

原生的ScrollView是不支持滑動(dòng)監(jiān)聽(tīng)的,需要自定義一個(gè)ObservableScrollView。

public class ObservableScrollView extends ScrollView {

 private ScrollViewListener scrollViewListener;

 public ObservableScrollView(Context context) {
 super(context);
 }

 public ObservableScrollView(Context context, AttributeSet attrs, int defStyle) {
 super(context, attrs, defStyle);
 }

 public ObservableScrollView(Context context, AttributeSet attrs) {
 super(context, attrs);
 }

 public void setScrollViewListener(ScrollViewListener scrollViewListener) {
 this.scrollViewListener = scrollViewListener;
 }

 @Override
 protected void onScrollChanged(int x, int y, int oldx, int oldy) {
 super.onScrollChanged(x, y, oldx, oldy);
 if (scrollViewListener != null) {
 scrollViewListener.onScrollChanged(this, x, y, oldx, oldy);
 }
 }

 public interface ScrollViewListener {
 void onScrollChanged(ObservableScrollView scrollView, int x, int y, int oldx, int oldy);
 }
}

3.寫在最后

歡迎同學(xué)們吐槽評(píng)論,如果你覺(jué)得本篇博客對(duì)你有用,那么就留個(gè)言或者頂一下吧(^-^)

完整的Demo下載

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android下使用TCPDUMP實(shí)現(xiàn)數(shù)據(jù)抓包教程

    Android下使用TCPDUMP實(shí)現(xiàn)數(shù)據(jù)抓包教程

    這篇文章主要介紹了Android下使用TCPDUMP實(shí)現(xiàn)數(shù)據(jù)抓包教程,本文講解使用抓包工具tcpdump抓取數(shù)據(jù),然后使用Wireshark來(lái)分析數(shù)據(jù),需要的朋友可以參考下
    2015-02-02
  • Android RecyclerView添加頭部和底部的方法

    Android RecyclerView添加頭部和底部的方法

    這篇文章主要為大家詳細(xì)介紹了Android RecyclerView添加頭部和底部的方法,感興趣的小伙伴們可以參考一下
    2016-05-05
  • android中Glide實(shí)現(xiàn)加載圖片保存至本地并加載回調(diào)監(jiān)聽(tīng)

    android中Glide實(shí)現(xiàn)加載圖片保存至本地并加載回調(diào)監(jiān)聽(tīng)

    本篇文章主要介紹了android中Glide實(shí)現(xiàn)加載圖片保存至本地并加載回調(diào)監(jiān)聽(tīng),具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-09-09
  • Android實(shí)現(xiàn)畫板功能(二)

    Android實(shí)現(xiàn)畫板功能(二)

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)畫板功能的第二篇,使用imageView,bitmap方式實(shí)現(xiàn)畫板,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • Android中仿IOS提示框的實(shí)現(xiàn)方法

    Android中仿IOS提示框的實(shí)現(xiàn)方法

    下面小編就為大家分享一篇Android中仿IOS提示框的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-01-01
  • API處理Android安全距離詳情

    API處理Android安全距離詳情

    這篇文章主要介紹了API處理Android安全距離詳情,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-06-06
  • Android設(shè)備adb連接后顯示device unauthorized解決方案

    Android設(shè)備adb連接后顯示device unauthorized解決方案

    這篇文章主要為大家介紹了Android設(shè)備adb連接后顯示device unauthorized解決方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • listview 選中高亮顯示實(shí)現(xiàn)方法

    listview 選中高亮顯示實(shí)現(xiàn)方法

    當(dāng)點(diǎn)擊左側(cè)ListView后,選中的一行就會(huì)一直呈高亮狀態(tài)顯示,圖中選中行字的顏色顯示為藍(lán)色(注意:是選中行后一直高亮,而不是只是點(diǎn)擊時(shí)高亮),如果再次點(diǎn)擊另外的一行, 則新的那一行就高亮,下面就來(lái)實(shí)現(xiàn)這個(gè)高亮效果的顯示
    2012-11-11
  • Flutter手勢(shì)密碼的實(shí)現(xiàn)示例(附demo)

    Flutter手勢(shì)密碼的實(shí)現(xiàn)示例(附demo)

    本文主要介紹了Flutter手勢(shì)密碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Android實(shí)現(xiàn)3D標(biāo)簽云簡(jiǎn)單效果

    Android實(shí)現(xiàn)3D標(biāo)簽云簡(jiǎn)單效果

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)3D標(biāo)簽云簡(jiǎn)單效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05

最新評(píng)論

泰宁县| 石城县| 望江县| 永泰县| 建瓯市| 商水县| 日土县| 康乐县| 会东县| 石泉县| 牙克石市| 醴陵市| 无棣县| 乃东县| 和硕县| 定陶县| 四川省| 南阳市| 九江市| 潼关县| 富顺县| 绍兴市| 香港 | 时尚| 乌兰浩特市| 大英县| 三台县| 黔南| 灌阳县| 蚌埠市| 锦州市| 丘北县| 辛集市| 平远县| 邢台县| 集安市| 成武县| 云浮市| 明光市| 黄山市| 和林格尔县|