您的位置:首页 > 其它

自定义控件(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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  移动开发