android 上下輪播

自定義LuckyNoticeView


import android.content.Context;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.animation.AnimationUtils;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.ViewFlipper;

import java.util.List;

/**
 * 輪播公告Veiw
 */
public class LuckyNoticeView extends ViewFlipper{

    private Context mContext;

   //設置數據的bean
    private List<LuckyBean> mNotices;

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

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

    private void init(Context context) {
        mContext = context;
        // 輪播間隔時間為3s
        setFlipInterval(3000);
        // 內邊距5dp
        setPadding(dp2px(5f), dp2px(5f), dp2px(5f), dp2px(5f));
        // 設置enter和leave動畫
        setInAnimation(AnimationUtils.loadAnimation(mContext, R.anim.notice_in));
        setOutAnimation(AnimationUtils.loadAnimation(mContext, R.anim.notice_out));
    }

    /**
     * 添加需要輪播展示的中獎公告
     *
     * @param notices
     */
    public void addNotice(List<LuckyBean> notices) {
        mNotices = notices;
        removeAllViews();
        for (int i = 0; i < mNotices.size(); i++) {
            //根布局  (這里用的item就是你上下輪播的列表樣式,我這里面只有一個textview)
            LinearLayout item = (LinearLayout) LayoutInflater.from(mContext).inflate(R.layout.item_lucky_notice_view, null);
            ((TextView) item.findViewById(R.id.lucky_user_nickname))
                    .setText(mNotices.get(i).getUser_name());
            item.setTag(i);
            LuckyNoticeView.this.addView(item);
        }
    }

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

}

xml引用

  <com.feature.home.homepage.widget.LuckyNoticeView
                android:id="@+id/nv_point_notice"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="30dp" />

在activity里(僅供參考)

                 //解析返回的數據
                  val parseObject = JSON.parseObject(apiResult.data, LuckyBean::class.java)
                   //添加中獎輪播
                   if (parseObject.prize_log!!.isNotEmpty()) {
                   nv_point_notice.addNotice(parseObject.prize_log)
                   nv_point_notice.startFlipping()
              }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。