您的位置:首页 > 其它

关于view的自定义viewpager

2017-12-03 18:53 302 查看
自定义viewpager的Auto方法

package com.bwie.week01;

import android.content.Contex
4000
t;

import android.os.Handler;

import android.os.Message;

import android.support.v4.view.ViewPager;

import android.util.AttributeSet;

import android.util.Log;

import android.view.View;

import android.view.ViewGroup;

import android.view.ViewParent;

import android.widget.LinearLayout;

import com.bwie.week01.adapter.MyPagerAdapter;

import java.util.Timer;

import java.util.TimerTask;

/**

 * Created by 老北城 on 2017/12/02.

 */

public class AutoBanner extends LinearLayout implements ViewPager.OnPageChangeListener{

    private ViewPager vp;

    private Timer timer;

    private int curentPager=0;

    private Handler handler=new Handler(){

        @Override

        public void handleMessage(Message msg) {

            super.handleMessage(msg);

            vp.setCurrentItem(curentPager);

        }

    };

    public AutoBanner(Context context) {

        this(context,null);

    }

    public AutoBanner(Context context, AttributeSet attrs) {

        this(context, attrs,0);

    }

    public AutoBanner(Context context, AttributeSet attrs, int defStyleAttr) {

        super(context, attrs, defStyleAttr);

        //自定义属性

        View view=View.inflate(context,R.layout.viewpager_layout,this);

        //在这找到这个控件

        vp = (ViewPager) view.findViewById(R.id.vp);

        //为控件设置改变事件

        vp.addOnPageChangeListener(this);

        timer = new Timer();

    }

    public void setAdapter(MyPagerAdapter myPagerAdapter){

        vp.setAdapter(myPagerAdapter);

    }

    public void startAuto(){

        //开始定时器

        timer.schedule(new TimerTask() {

            @Override

            public void run() {

                ++curentPager;

                handler.sendEmptyMessage(0);

                Log.i("123",curentPager+"q");

            }

        },0,3000);

    }

    @Override

    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

    }

    @Override

    public void onPageSelected(int position) {

    }

    @Override

    public void onPageScrollStateChanged(int state) {

    }

}

然后在main方法里面调用设配器并解析数据

package com.bwie.week01;

import android.os.Handler;

import android.os.Message;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.util.Log;

import com.bwie.week01.adapter.MyPagerAdapter;

import com.bwie.week01.bean.User;

import com.bwie.week01.bean.Vplist;

import com.google.gson.Gson;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.net.HttpURLConnection;

import java.net.MalformedURLException;

import java.net.URL;

import java.util.ArrayList;

import java.util.List;

public class MainActivity extends AppCompatActivity {

    private List<Vplist> list = new ArrayList<Vplist>();

    private AutoBanner autobanner;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        initData();

        autobanner = (AutoBanner) findViewById(R.id.autobanner);

        //autobanner.setAdapter(new MyPagerAdapter(this));

        autobanner.startAuto();

    }

    Handler handler = new Handler(){

        @Override

        public void handleMessage(Message msg) {

            super.handleMessage(msg);

            Gson gson = new Gson();

            User jsonBean = gson.fromJson((String) msg.obj, User.class);

            List<User.DataBean> data = jsonBean.getData();

            for (int i = 0; i <data.size() ; i++) {

                String img = data.get(i).getIcon();

                String url = data.get(i).getUrl();

                list.add(new Vplist(img,url));

            }

            autobanner.setAdapter(new MyPagerAdapter(list,MainActivity.this));

        }

    };

    private void initData() {

        new Thread(new Runnable() {

            @Override

            public void run() {

                try {

                    URL url = new URL("http://120.27.23.105/ad/getAd");

                            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();

                    int responseCode = urlConnection.getResponseCode();

                    if(responseCode==200){

                        InputStream inputStream = urlConnection.getInputStream();

                        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));

                        StringBuilder builder = new StringBuilder();

                        String stringTemp = "";

                        while((stringTemp=reader.readLine())!=null){

                            builder.append(stringTemp);

                        }

                        Message message = new Message();

                        message.obj = builder.toString();

                        handler.sendMessage(message);

                    }

                } catch (MalformedURLException e) {

                    e.printStackTrace();

                } catch (IOException e) {

                    e.printStackTrace();

                }

            }

        }).start();

    }

}

之后就是配置适配器了  也是最重要的,最后记得要把他们放到container.addView(view);里面
package com.bwie.week01.adapter;

import android.content.Context;

import android.content.Intent;

import android.support.v4.view.PagerAdapter;

import android.util.Log;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ImageView;

import com.bwie.week01.Main2Activity;

import com.bwie.week01.MainActivity;

import com.bwie.week01.R;

import com.bwie.week01.bean.Vplist;

import com.nostra13.universalimageloader.core.ImageLoader;

import java.util.List;

/**

 * Created by 老北城 on 2017/12/02.

 */

public class MyPagerAdapter extends PagerAdapter {

    private List<Vplist> list;

    private Context context;

    public MyPagerAdapter(List<Vplist> list, Context context) {

        this.list = list;

        this.context = context;

    }

    //设置构造方法

    @Override

    public int getCount() {

        //设置无线轮播的最大值

        return Integer.MAX_VALUE;

    }

    @Override

    public boolean isViewFromObject(View view, Object object) {

        return view == object;

    }

    @Override

    public Object instantiateItem(final ViewGroup container, final int position) {

        View view=View.inflate(context, R.layout.img_layout,null);

        ImageView img = (ImageView) view.findViewById(R.id.img);

        ImageLoader.getInstance().displayImage(list.get(position%list.size()).getImg(),img);

        img.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View v) {

                Intent intent=new Intent(context, Main2Activity.class);

                intent.putExtra("url",list.get(position).getUrl());

                context.startActivity(intent);

            }

        });

        container.addView(view);

        return view;

    }

    @Override

    public void destroyItem(ViewGroup container, int position, Object object) {

        container.removeView((View) object);

    }

}

布局如下

<?xml version="1.0" encoding="utf-8"?>

<android.support.constraint.ConstraintLayout

    xmlns: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.bwie.week01.MainActivity">

    <com.bwie.week01.AutoBanner

        android:layout_width="match_parent"

        android:layout_height="200dp"

        android:id="@+id/autobanner"

       ></com.bwie.week01.AutoBanner>

</android.support.constraint.ConstraintLayout>

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent">

    <android.support.v4.view.ViewPager

        android:id="@+id/vp"

        android:layout_width="match_parent"

        android:layout_height="200dp">

    </android.support.v4.view.ViewPager>

</LinearLayout>

中间那个是一个点击事件,点击传值在第二个页面用webview接收直接就是一个页面
只需要在第二个页面里面添加一个webview设置一个id,在main里面找到id然后接收从 第一个页面传过来的值在赋值就可以使用了
方法如下

package com.bwie.week01;

import android.content.Intent;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.webkit.WebView;

public class Main2Activity extends AppCompatActivity {

    private WebView wed;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main2);

        wed = (WebView) findViewById(R.id.wed);

        Intent intent = getIntent();

        String extra = intent.getStringExtra("url");

        wed.loadUrl(extra);

           }

}

布局如下

<?xml version="1.0" encoding="utf-8"?>

<android.support.constraint.ConstraintLayout xmlns: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.bwie.week01.Main2Activity">

    <WebView

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:id="@+id/wed"

       ></WebView>

</android.support.constraint.ConstraintLayout>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: