日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android 高仿美团,Android 仿美团、大众点评团购详情UI

發布時間:2023/12/14 Android 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 高仿美团,Android 仿美团、大众点评团购详情UI 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在scrollview 上滑固定某一控件(美團團購詳情UI)文中介紹了怎么用touchlistener實現類似上滑停住的效果,但是這種方法存在一個明顯的bug,就是在內容比較多的時候, 大部分人都是以滑動方式查看內容,而不是touch的方式,這就會導致最上面的滑塊出現不及時,或者延后的現象,這里介紹一個全新的方法去實現類似效果,可以很好的解決以上問題.

目前在scrollview中沒有onscrolllistener所以需要自己去實現,先復寫一個scrollview:

package com.example.meituandemo;

import android.content.Context;

import android.util.AttributeSet;

import android.widget.ScrollView;

public class MyScrollView extends ScrollView {

private OnScrollListener onScrollListener;

public MyScrollView(Context context) {

this(context, null);

}

public MyScrollView(Context context, AttributeSet attrs) {

this(context, attrs, 0);

}

public MyScrollView(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

}

/**

* 設置滾動接口

* @param onScrollListener

*/

public void setOnScrollListener(OnScrollListener onScrollListener) {

this.onScrollListener = onScrollListener;

}

@Override

protected void onScrollChanged(int l, int t, int oldl, int oldt) {//滑動改變就會實時調用

super.onScrollChanged(l, t, oldl, oldt);

if(onScrollListener != null){

onScrollListener.onScroll(t);

}

}

/**

*

* 滾動的回調接口

*

*/

public interface OnScrollListener{

/**

* 回調方法, 返回MyScrollView滑動的Y方向距離

* @param scrollY

* 、

*/

public void onScroll(int scrollY);

}

}

然后就在mainactivity中調用:

package com.example.meituandemo;

import android.app.Activity;

import android.os.Bundle;

import android.view.ViewTreeObserver.OnGlobalLayoutListener;

import android.widget.LinearLayout;

import com.example.meituandemo.MyScrollView.OnScrollListener;

public class MainActivity extends Activity implements OnScrollListener{//注意繼承的是自定義的listener

/**

* 自定義的MyScrollView

*/

private MyScrollView myScrollView;

/**

* 在MyScrollView里面的購買布局

*/

private LinearLayout mBuyLayout;

/**

* 位于頂部的購買布局

*/

private LinearLayout mTopBuyLayout;

@SuppressWarnings("deprecation")

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

myScrollView = (MyScrollView) findViewById(R.id.scrollView);//你的scrollview

mBuyLayout = (LinearLayout) findViewById(R.id.buy);//滑動的購買布局

mTopBuyLayout = (LinearLayout) findViewById(R.id.top_buy_layout);//頂部出現的購買布局

myScrollView.setOnScrollListener(this);

//當布局的狀態或者控件的可見性發生改變回調的接口

findViewById(R.id.parent_layout).getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

//

@Override

public void onGlobalLayout() {

//這一步很重要,使得上面的購買布局和下面的購買布局重合

onScroll(myScrollView.getScrollY());

}

});

}

@Override

public void onScroll(int scrollY) {//這個是回調接口調用函數,layout函數是view重繪的方法,作用就是當下面的購買布局還沒有滑到頂部時,把兩個布局繪制在一起,當下面的購買布局滑出屏幕 ,就把頂部的購買布局繪制在頂部不動,就實現類似效果。

int mBuyLayout2ParentTop = Math.max(scrollY, mBuyLayout.getTop());

mTopBuyLayout.layout(0, mBuyLayout2ParentTop, mTopBuyLayout.getWidth(), mBuyLayout2ParentTop + mTopBuyLayout.getHeight());

}

}

如有問題請留言,轉載注明出處。

總結

以上是生活随笔為你收集整理的android 高仿美团,Android 仿美团、大众点评团购详情UI的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。