帶貨直播系統原始碼中,商品詳情頁是如何搭建起來的

萬嶽教育系統發表於2020-07-17

1.  實現滑動控制到導航欄的顯示和隱藏

mScrollView.setOnScrollChangeListener(
new View.OnScrollChangeListener() 
{    
@Override    
public void onScrollChange
(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY
) 
{        
float alpha=(float)scrollY/(float)300; //aplpha值控制範圍在0-300        
ViewUtil.setAlpha(mVTab,alpha); //設定導航欄的透明度
 
public static void setAlpha
(View view,float alpha) 
{    
if(view==null||view.getAlpha()==alpha){        
return;    
}    
if(alpha>1)
{   //大於1過濾       
alpha=1F;    
}    
view.setAlpha(alpha);
}


 

2.  實現點選導航欄切換到對應的模組

private void 
checkDffect(
int 
item) { 
//item 0,1,2,3 分別對應的4個模組
    
if
(
mCurrentItem
==item){
        
return
;
    
    selectTabLine(item);
    
switch 
(item){
        
case 
0:
            scroll(
mPannelViewProxy
);
            
break
;
        
case 
1:
            scroll(
mGoodsEvaluateViewProxy
);
            
break
;
        
case 
2:
            scroll(
mGoodsRecommendViewProxy
);
            
break
;
        
case 
3:
            scroll(
mGoodsWebViewProxy
);
 
private void 
scroll(
final 
BaseGoodItemViewProxy goodItemViewProxy) {
//goodItemViewProxy是view的管理器
    
if
(
mScrollView
!=
null
&&goodItemViewProxy!=
null
&&goodItemViewProxy.getTop()!=-1){
        
mScrollView
.post(
new 
Runnable() { 
//透過post方法延遲執行
            
@Override
            
public void 
run() {
                
mScrollView
.scrollTo(0,goodItemViewProxy.getTop());//傳入view的top
            }
        });
    }
else 
{
        DebugUtil.
sendException
(
"scroll報錯了"
);
    }
}


   

3.  手指滑動頁面,tab自動切換到對應的顯示位置

 

mScrollView.setOnScrollChangeListener(new View.OnScrollChangeListener() 
{    @Override    
public void onScrollChange
(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) 
{        if(mPannelViewProxy!=null)
{         if(mPannelViewProxy.isScrollTop(scrollY))
{ //每一個view都去監聽scrollview的滾動位置             
selectTabLine(0);             
if(mPannelViewProxy.getOffectTabHeight()==0)
{                 //將tab欄高度傳入,加入偏移量,目的是控制view滑動到tab欄正下面屬於複合條件                
mPannelViewProxy.setOffectTabHeight(mVTab.getHeight());             
}          
}        
}
 
 
    
 
public boolean isScrollTop(int dy)
{    boolean isUp=lastScroolDy-dy>0;//是否是上滑    
dy=dy+mOffectTabHeight; //加入偏移量    if(mContentView!=null)
{       mTop=mContentView.getTop(); //       mBottom=mContentView.getBottom();       
/*因為onScrollChange不是絕對實時的,並不能精確控制到沒有誤差,所以加入30上下到允許值*/       
if(Math.abs((dy-mTop))<30)
{   
//當滑動到view頂部的時候          
return true;       
}else if(isUp&&Math.abs((dy-mBottom))<30)
{//當向上滑到view的底部的時候,也應該切換到對應的欄目        
return true;       
}    
}    
lastScroolDy=dy; //記錄上一次滑動的值    
return false;
}


以上就是帶貨直播系統原始碼中,商品介紹詳情頁是被如何搭建起來的


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69968464/viewspace-2705222/,如需轉載,請註明出處,否則將追究法律責任。

相關文章