自定义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()
}
网友评论