自定义控件(Banner轮播)
2018-01-01 19:56
148 查看
MainActivity---------------------------------------------------------
package com.example.myapplication; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.Toast; import com.google.gson.Gson; import java.io.IOException; import java.util.ArrayList; import java.util.List; import okhttp3.Call; import okhttp3.Callback; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; public class MainActivity extends AppCompatActivity { private List<String> li; private CustomerBanner customerBanner; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); customerBanner = (CustomerBanner) findViewById(R.id.custombanner); li = new ArrayList<>(); OkHttpClient okHttpClient = new OkHttpClient(); final Request build = new Request.Builder().url("http://120.27.23.105/ad/getAd").build(); Call call = okHttpClient.newCall(build); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { String string = response.body().string(); Bean bean = new Gson().fromJson(string, Bean.class); List<Bean.DataBean> data = bean.getData(); for (int i=0;i<data.size();i++) { li.add(data.get(i).getIcon()); } runOnUiThread(new Runnable() { @Override public void run() { customerBanner.setTimeSecond(5); customerBanner.setImageUrls(li); Toast.makeText(MainActivity.this,""+li.toString(),Toast.LENGTH_SHORT).show(); } }); } }); } }
---------------------------------------------------------------------CustomerBanner--------------------------------------------------------------------------------------------------------------------------------------------
package com.example.myapplication;import android.content.Context;import android.content.Intent;import android.os.Handler;import android.os.Message;import android.support.annotation.AttrRes;import android.support.annotation.NonNull;import android.support.annotation.Nullable;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.util.AttributeSet;import android.view.View;import android.view.ViewGroup;import android.widget.FrameLayout;import android.widget.ImageView;import android.widget.LinearLayout;import com.bumptech.glide.Glide;import java.util.List;/*** Created by dyz on 2017/12/30/0030.*/public class CustomerBanner extends FrameLayout {List<String>li;private ViewPager vp;private int time=2;Handler handler=new Handler(){@Overridepublic void handleMessage(Message msg) {if(msg.what==0){int currentItem = vp.getCurrentItem();vp.setCurrentItem(currentItem+1);sendEmptyMessageDelayed(0,time*1000);}}};private LinearLayout linearLayout;public CustomerBanner(@NonNull Context context) {super(context);init();}public CustomerBanner(@NonNull Context context, @Nullable AttributeSet attrs) {super(context, attrs);init();}public CustomerBanner(@NonNull Context context, @Nullable AttributeSet attrs, @AttrRes int defStyleAttr) {super(context, attrs, defStyleAttr);init();c744}private void init(){View view = View.inflate(getContext(), R.layout.f1, this);vp = view.findViewById(R.id.vp);linearLayout = view.findViewById(R.id.linear_banner);}public void setImageUrls(List<String>li){this.li=li;if (li == null){return;}MyPagerAdapter myPagerAdapter = new MyPagerAdapter(getContext(),li);vp.setAdapter(myPagerAdapter);vp.setCurrentItem(li.size()*1000);handler.sendEmptyMessageDelayed(0,time*1000);}public void setTimeSecond(int time){this.time=time;}private class MyPagerAdapter extends PagerAdapter{Context context;List<String>li;public MyPagerAdapter(Context context, List<String> li) {this.context = context;this.li = li;}@Overridepublic int getCount() {return Integer.MAX_VALUE;}@Overridepublic boolean isViewFromObject(View view, Object object) {return view==object;}@Overridepublic Object instantiateItem(ViewGroup container, final int position) {ImageView imageView=new ImageView(context);Glide.with(context).load(li.get(position%li.size())).into(imageView);container.addView(imageView);imageView.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View view) {Intent intent=new Intent(getContext(),Main2Activity.class);getContext().startActivity(intent);}});return imageView;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeView((View) object);}}}-------------------------------------------------------------------]MainActivity.xml-------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"android:layout_height="match_parent" tools:context="com.example.myapplication.MainActivity"><com.example.myapplication.CustomerBannerandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/custombanner"></com.example.myapplication.CustomerBanner></LinearLayout>------------------------------------------------------------f1.xml-------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"android:layout_height="match_parent" tools:context="com.example.myapplication.MainActivity"><com.example.myapplication.CustomerBannerandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/custombanner"></com.example.myapplication.CustomerBanner></LinearLayout>
相关文章推荐
- 自定义控件实现banner轮播
- Android自定义控件BannerLayout,实现广告轮播
- 自定义控件:垂直轮播的小贴士Banner,仿 淘宝app的“淘宝头条”
- Android自定义控件-仿魅族Banner 自动轮播 无限轮播
- Android自定义控件:小米应用市场Banner轮播、可拉伸回弹的ListView与ScrollView
- Android Banner轮播图 recyclerView添加headVie
- Banner 怎么实现轮播不同尺寸的图片
- 广告轮播Banner
- 轮播Banner使用简单集成
- android实现banner轮播图无限轮播效果
- 手把手教你用ViewPager自定义实现Banner轮播
- Banner实现无限轮播
- Android 开发中PullToRefreshScrollView上拉刷新,Banner实现无限轮播
- banner控件实现无线轮播+PullToRefreshScrollView 轮播图和listview跟着一起刷新
- Android——Banner无限轮播图
- Banner无限轮播
- ConvenientBanner无线轮播 实现广告条
- 网络请求数据 banner图片轮播和list请求数据
- PullToRefresh+Banner无限轮播
- 自定义开发一个android轮播图控件BannerImg