真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Android怎么實現(xiàn)淘寶商品詳情頁效果-創(chuàng)新互聯(lián)

Android怎么實現(xiàn)淘寶商品詳情頁效果?相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

創(chuàng)新互聯(lián)建站專注于成都做網(wǎng)站、網(wǎng)站制作、網(wǎng)頁設計、網(wǎng)站制作、網(wǎng)站開發(fā)。公司秉持“客戶至上,用心服務”的宗旨,從客戶的利益和觀點出發(fā),讓客戶在網(wǎng)絡營銷中找到自己的駐足之地。尊重和關懷每一位客戶,用嚴謹?shù)膽B(tài)度對待客戶,用專業(yè)的服務創(chuàng)造價值,成為客戶值得信賴的朋友,為客戶解除后顧之憂。

布局文件 

 
 
      
      
     
      
      
 

這塊主要是設置剛進入頁面時的透明頭部  主要組成部分有返回鍵  和頭部的方形小圖片 還有分享按鈕 以及你想附加的標題功能 默認進入是透明的只顯示返回按鈕

 
      
 
        
 
        
 
        
 
        
 
      
 
      

這部分主要是我們的標簽選項卡 我這邊采用的是RadioGroup+radioButton實現(xiàn)的 類似于淘寶的商品、評價、詳情等標簽

這樣我們的頁面布局頭部就完成了  下面我們來看下具體組成內(nèi)容


    
      
        
        
      
 
      
        
 
        
      
 
      
      
        
 
        
        
        
      
 
    

這部分就是我們的具體頁面內(nèi)容  可以看到我們的詳情頁面數(shù)據(jù)使用自定義的一個Scrollview來包裹的 其中分為4塊 我們布局里面寫的很清楚 分別對應著詳情頁中的四個模塊  當然  我這里面只是用圖片來代替內(nèi)容了  具體內(nèi)容可自己填充

下面來看下我們具體實現(xiàn)代碼

StatusBarCompat.translucentStatusBar(this);

我這邊是采用的第三方的沉浸式透明狀態(tài)欄  你們可以自行替換

dependencies {
    compile ('com.github.niorgai:StatusBarCompat:2.1.4', {
      exclude group: 'com.android.support'
    })
  }

這個是我沉浸式狀態(tài)欄的依賴  感興趣的可以了解一下

 Rect rectangle= new Rect();
    getWindow().getDecorView().getWindowVisibleDisplayFrame(rectangle);
    ideaScrollView.setViewPager(viewPager,getMeasureHeight(headerParent)-rectangle.top);
    icon.setImageAlpha(0);
    radioGroup.setAlpha(0);
    radioGroup.check(radioGroup.getChildAt(0).getId());

上面是獲取狀態(tài)欄的高度并且使用自定義scrollview綁定banner圖片 并獲取圖片高度

以及初始化我們頭部部分控件的透明度 和默認選擇第一個標簽

View one = findViewById(R.id.one);
View two = findViewById(R.id.two);
View four = findViewById(R.id.four);
View three = findViewById(R.id.three);
ArrayList araryDistance = new ArrayList<>();
 
araryDistance.add(0);
araryDistance.add(getMeasureHeight(one)-getMeasureHeight(headerParent));
araryDistance.add(getMeasureHeight(one)+getMeasureHeight(two)-getMeasureHeight(headerParent));  
 
araryDistance.add(getMeasureHeight(one)+getMeasureHeight(two)+getMeasureHeight(three)-getMeasureHeight(headerParent));
 
ideaScrollView.setArrayDistance(araryDistance);

這塊是我們獲取到我們的四個模塊的高度 并把高度存到集合中 傳入到我們自定義的scrollview中

private void scrollToPosition(int position){
    scrollTo(0,arrayDistance.get(position));
  }

scrollview通過傳過來的高度進行定位滑動 意思就是點擊我們的標題選項滑動到相應的位置

 public int getMeasureHeight(View view){
    int width = View.MeasureSpec.makeMeasureSpec(0,
        View.MeasureSpec.UNSPECIFIED);
    int height = View.MeasureSpec.makeMeasureSpec(0,
        View.MeasureSpec.UNSPECIFIED);
    view.measure(width, height);
    return view.getMeasuredHeight();
  }

這個是獲取控件高度的方法

ideaScrollView.setOnScrollChangedColorListener(new IdeaScrollView.OnScrollChangedColorListener() {
      @Override
      public void onChanged(float percentage) {
 
        int color = getAlphaColor(percentage>0.9f?1.0f:percentage);
        header.setBackgroundDrawable(new ColorDrawable(color));
        radioGroup.setBackgroundDrawable(new ColorDrawable(color));
        icon.setImageAlpha((int) ((percentage>0.9f?1.0f:percentage)*255));
        radioGroup.setAlpha((percentage>0.9f?1.0f:percentage)*255);
 
        setRadioButtonTextColor(percentage);
 
      }
 
      @Override
      public void onChangedFirstColor(float percentage) {
 
      }
 
      @Override
      public void onChangedSecondColor(float percentage) {
 
      }
    });

這個監(jiān)聽方法是監(jiān)測我們滑動的距離 來改變我們標題的顏色 從透明慢慢滑動進行顏色漸變 以及設置我們頭部控件的顏色 和展示我們的標題選項卡

public int getAlphaColor(float f){
    return Color.argb((int) (f*255),0x09,0xc1,0xf4);
  }
 
  public int getLayerAlphaColor(float f){
    return Color.argb((int) (f*255),0x09,0xc1,0xf4);
  }
 
  public int getRadioCheckedAlphaColor(float f){
    return Color.argb((int) (f*255),0x44,0x44,0x44);
  }
 
  public int getRadioAlphaColor(float f){
    return Color.argb((int) (f*255),0xFF,0xFF,0xFF);
  }

可以根據(jù)這塊來改變我們頭部以及標題的顏色 根據(jù)傳入的值來進行顏色漸變

 ideaScrollView.setOnSelectedIndicateChangedListener(new IdeaScrollView.OnSelectedIndicateChangedListener() {
      @Override
      public void onSelectedChanged(int position) {
        isNeedScrollTo = false;
        radioGroup.check(radioGroup.getChildAt(position).getId());
        isNeedScrollTo = true;
      }
    });
 
    radioGroup.setOnCheckedChangeListener(radioGroupListener);
 
 private RadioGroup.OnCheckedChangeListener radioGroupListener =new RadioGroup.OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) {
      for(int i=0;i

根據(jù)這兩個監(jiān)聽方法來改變我們標題的選中tab 滑動到不同的位置選中對應的Tab并改變顏色 具體實現(xiàn)方法看自定義Scrollview

根據(jù)限定距離(Banner)計算百分比偏移量,實現(xiàn)顏色漸變、透明度漸變(淘寶商品詳情頁有二次顏色漸變)

@Override
  protected void onScrollChanged(int l, int t, int oldl, int oldt) {
    super.onScrollChanged(l, t, oldl, oldt);
    if (viewPager != null && t != oldt) {
      viewPager.setTranslationY(t/2);
    }
 
    if(viewPager!=null&&t<=point.x-headerHeight&&getOnScrollChangedColorListener()!=null){
 
      getOnScrollChangedColorListener().onChanged(Math.abs(t)/Float.valueOf(point.x-headerHeight));
      if(t<=(point.x-headerHeight)/2){
        getOnScrollChangedColorListener().onChangedFirstColor(t/(point.x-headerHeight)/2);
      }else{
        getOnScrollChangedColorListener().onChangedSecondColor((t-(point.x-headerHeight)/2)/(point.x-headerHeight)/2);
      }
 
    }
 
    int currentPosition = getCurrentPosition(t,arrayDistance);
    if(currentPosition!=position&&getOnSelectedIndicateChangedListener()!=null){
      getOnSelectedIndicateChangedListener().onSelectedChanged(currentPosition);
    }
    this.position = currentPosition;
  }
 
  private int getCurrentPosition(int t, ArrayList arrayDistance) {
 
    int index = 0;
    for (int i=0;i=arrayDistance.get(i)&&t

下面是自定義Scrollview的全部代碼

package com.text.lg.ideascrollview;
 
import android.content.Context;
import android.graphics.Point;
import android.util.AttributeSet;
import android.view.WindowManager;
import android.widget.ScrollView;
 
import java.util.ArrayList;
 
public class IdeaScrollView extends ScrollView {
 
 private final Point point;
 private IdeaViewPager viewPager;
 
 private int position = 0;
 
 ArrayList arrayDistance = new ArrayList<>();
 private int headerHeight;
 
 public IdeaScrollView(Context context) {
  this(context,null,0);
 }
 
 public IdeaScrollView(Context context, AttributeSet attrs) {
  this(context, attrs,0);
 }
 
 public IdeaScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
  super(context, attrs, defStyleAttr);
 
  WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
  point = new Point();
  windowManager.getDefaultDisplay().getSize(point);
 }
 
 @Override
 protected void onScrollChanged(int l, int t, int oldl, int oldt) {
  super.onScrollChanged(l, t, oldl, oldt);
  if (viewPager != null && t != oldt) {
   viewPager.setTranslationY(t/2);
  }
 
  if(viewPager!=null&&t<=point.x-headerHeight&&getOnScrollChangedColorListener()!=null){
 
   getOnScrollChangedColorListener().onChanged(Math.abs(t)/Float.valueOf(point.x-headerHeight));
   if(t<=(point.x-headerHeight)/2){
    getOnScrollChangedColorListener().onChangedFirstColor(t/(point.x-headerHeight)/2);
   }else{
    getOnScrollChangedColorListener().onChangedSecondColor((t-(point.x-headerHeight)/2)/(point.x-headerHeight)/2);
   }
 
  }
 
  int currentPosition = getCurrentPosition(t,arrayDistance);
  if(currentPosition!=position&&getOnSelectedIndicateChangedListener()!=null){
   getOnSelectedIndicateChangedListener().onSelectedChanged(currentPosition);
  }
  this.position = currentPosition;
 }
 
 private int getCurrentPosition(int t, ArrayList arrayDistance) {
 
  int index = 0;
  for (int i=0;i=arrayDistance.get(i)&&t getArrayDistance() {
  return arrayDistance;
 }
 
 public void setArrayDistance(ArrayList arrayDistance) {
  this.arrayDistance = arrayDistance;
 }
 
 public OnSelectedIndicateChangedListener getOnSelectedIndicateChangedListener() {
  return onSelectedIndicateChangedListener;
 }
 
 public void setOnSelectedIndicateChangedListener(OnSelectedIndicateChangedListener onSelectedIndicateChangedListener) {
  this.onSelectedIndicateChangedListener = onSelectedIndicateChangedListener;
 }
}

看完上述內(nèi)容,你們掌握Android怎么實現(xiàn)淘寶商品詳情頁效果的方法了嗎?如果還想學到更多技能或想了解更多相關內(nèi)容,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!


分享題目:Android怎么實現(xiàn)淘寶商品詳情頁效果-創(chuàng)新互聯(lián)
鏈接地址:http://weahome.cn/article/djhsdo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部