美文网首页
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