=====首页轮播图=====
第一步:首先我用到的是第三方控件,导入到gradle即可
compile 'com.youth.banner:banner:1.4.9'
第二步:绑定控件什么的我就不说了,直接设置Banner轮播图的属性了
--xml写入的
<com.youth.banner.Banner android:id="@+id/banner" android:layout_width="match_parent" android:layout_height="wrap_parant"/>
private ArrayListlist_path;
list_path = new ArrayList<>(); //放标题的集合 list_path.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic21363tj30ci08ct96.jpg"); list_path.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic259ohaj30ci08c74r.jpg"); list_path.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic2b16zuj30ci08cwf4.jpg"); list_path.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic2e7vsaj30ci08cglz.jpg"); //设置图片加载器,图片加载器在下方 banner.setImageLoader(new MyLoader()); //设置图片网址或地址的集合 banner.setImages(list_path); //设置轮播间隔时间 banner.setDelayTime(5000); //设置是否为自动轮播,默认是“是”。 banner.isAutoPlay(true); //设置指示器的位置,小点点,左中右。 banner.setIndicatorGravity(BannerConfig.CENTER) //以上内容都可写成链式布局,这是轮播图的监听。比较重要。方法在下面。 .setOnBannerListener(this) //必须最后调用的方法,启动轮播图。 .start();
这边找的网络图片,放到集合里,用banner在下方加载,自定义一个MyLoader()图片加载器方法,用的是Glide
//自定义的图片加载器 private class MyLoader extends ImageLoader { @Override public void displayImage(Context context, Object path, ImageView imageView) { Glide.with(context).load((String) path).into(imageView); Glide.with(context).load((String) path).placeholder(R.drawable.error)//图片加载出来前,显示的图片 .error(R.drawable.error)//图片加载失败后,显示的图 .into(imageView); } }
别忘记导入Glide
compile 'com.github.bumptech.glide:glide:3.7.0'
!!Ok啦,首页轮播图就完成了,如果需要加载后台传来的图片,只需要改setImages放入后台传来的数据集合就可以了!!
=====滚动广告条=====
在这里,我写了一个自定义控件。。
public class NoticeView extends ViewFlipper implements View.OnClickListener { private Context mContext; private ListmNotices; private OnNoticeClickListener mOnNoticeClickListener; public NoticeView(Context context) { super(context); } public NoticeView(Context context, AttributeSet attrs) { super(context, attrs); init(context); } private void init(Context context) { mContext = context; //轮播间隔时间3s setFlipInterval(3000); //设置动画 setInAnimation(AnimationUtils.loadAnimation(mContext, R.anim.in)); setOutAnimation(AnimationUtils.loadAnimation(mContext, R.anim.out)); } public void addNotice(List notices) { mNotices = notices; removeAllViews(); for (int i = 0; i < mNotices.size(); i++) { // 根据公告内容构建一个TextView String notice = notices.get(i); TextView textView = new TextView(mContext); textView.setSingleLine(); textView.setText(notice); textView.setTextSize(13f); textView.setEllipsize(TextUtils.TruncateAt.END); textView.setTextColor(Color.parseColor("#666666")); textView.setGravity(Gravity.CENTER_VERTICAL); // 将公告的位置设置为textView的tag方便点击是回调给用户 textView.setTag(i); textView.setOnClickListener(this); //添加到ViewPlipper NoticeView.this.addView(textView, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); } } @Override public void onClick(View v) { int position = (int) v.getTag(); String notice = mNotices.get(position); if (mOnNoticeClickListener != null) { mOnNoticeClickListener.onNoticeClick(position, notice); } } /** * 通知点击监听接口 */ public interface OnNoticeClickListener { void onNoticeClick(int position, String notice); } /** * 设置通知点击监听器 * * @param onNoticeClickListener 通知点击监听器 */ public void setmOnNoticeClickListener(OnNoticeClickListener onNoticeClickListener) { mOnNoticeClickListener = onNoticeClickListener; } private int dp2px(float dpValue) { return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpValue, mContext.getResources().getDisplayMetrics()); } }
在XML中直接引用即可。
然后再Activity中,添加属性:
NoticeView noticeView = findViewById(R.id.notice); Listnotices = new ArrayList<>(); notices.add("大促销下单拆福袋,亿万新年红斑随便拿"); notices.add("家电五折团,抢十亿无门槛现金红包"); notices.add("星球大战剃须刀首发送200元代金券"); noticeView.addNotice(notices); noticeView.startFlipping();
动画的话,直接贴代码,很简单的
in.xml
xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="1500" android:fromYDelta="100%p" android:toYDelta="0"> translate> set>
out.xml
xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="1500" android:fromYDelta="0" android:toYDelta="-100%p"> translate> set>
别忘了在res文件下,创建一个anim文件夹,把这两个放入该文件夹下哦
收工收工,回家睡觉咯