美文网首页
android 上下轮播

android 上下轮播

作者: 心中有梦丶身边有你 | 来源:发表于2020-08-20 09:22 被阅读0次

    自定义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()
                  }
    

    相关文章

      网友评论

          本文标题:android 上下轮播

          本文链接:https://www.haomeiwen.com/subject/aftsjktx.html