viewpager 小圆点

package news1510a.bawei.com.a13_lunbotu;

import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.ImageView;
import android.widget.LinearLayout;

import com.google.gson.Gson;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private ViewPager viewPager;
    private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            if (msg.what == 0){
                //viewPager显示下一页
                viewPager.setCurrentItem(viewPager.getCurrentItem() +1);

                //再次发送延时消息
                handler.sendEmptyMessageDelayed(0,2000);
            }
        }
    };
    private LinearLayout linearLayout;
    private List<ImageView> images;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        viewPager = (ViewPager) findViewById(R.id.view_pager);
        linearLayout = (LinearLayout) findViewById(R.id.linear_layout);

        //获取轮播图的数据
        getDataFromNet();
    }

    private void getDataFromNet() {
        AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() {
            @Override
            protected String doInBackground(Void... voids) {

                String path = "http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=5&page=1";

                try {
                    URL url = new URL(path);

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

                    connection.setRequestMethod("GET");
                    connection.setReadTimeout(5000);
                    connection.setConnectTimeout(5000);

                    int responseCode = connection.getResponseCode();
                    if (responseCode == 200){
                        InputStream inputStream = connection.getInputStream();

                        String json = streamToString(inputStream,"utf-8");

                        return json;

                    }

                } catch (Exception e) {
                    e.printStackTrace();
                }

                return null;
            }

            @Override
            protected void onPostExecute(String s) {
                //打印以下数据看看是否获取到
                Log.i("----",s);

                if (s != null){
                    Gson gson = new Gson();

                    DataDataBean dataDataBean = gson.fromJson(s, DataDataBean.class);

                    List<DataDataBean.DataBean> list = dataDataBean.getData();

                    //给viewPager设置适配器
                    MyAdapter myAdapter = new MyAdapter(MainActivity.this, list,handler);

                    //设置适配器
                    viewPager.setAdapter(myAdapter);

                    //3.根据集合的长度动态添加小圆点...linearLayout
                    initDoc(list);

                    //2.手动的可以无限滑动
                    viewPager.setCurrentItem(list.size()*100000);//设置当前展示中间某个足够大的位置

                    handler.sendEmptyMessageDelayed(0,2000);//发送一个延时的空消息

                    //viewPage设置监听事件
                    viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
                        @Override
                        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

                        }

                        /**
                         * 当选中某个页面的时候,把当前的小圆点背景变成绿色
                         * @param position
                         */
                        @Override
                        public void onPageSelected(int position) {

                            for (int i=0;i<images.size();i++){
                                if (i == position%images.size()){

                                    images.get(i).setImageResource(R.drawable.shape_01);
                                }else {
                                    images.get(i).setImageResource(R.drawable.shape_02);
                                }

                            }

                        }

                        @Override
                        public void onPageScrollStateChanged(int state) {

                        }
                    });
                }

            }
        };

        asyncTask.execute();

    }

    /**
     * 动态添加小圆点
     * @param list
     */
    private void initDoc(List<DataDataBean.DataBean> list) {
        //1.需要一个集合记录一下小圆点的imageView控件
        images = new ArrayList<ImageView>();
        //2...linearLayout上面的视图清空一下再去添加
        linearLayout.removeAllViews();

        for (int i=0;i<list.size();i++){
            ImageView imageView = new ImageView(MainActivity.this);

            if (i==0){
                imageView.setImageResource(R.drawable.shape_01);
            }else {
                imageView.setImageResource(R.drawable.shape_02);
            }

            //添加到集合去
            images.add(imageView);
            //添加到线性布局上

            //这是布局参数,,刚开始小圆点之间没有距离,所以使用java代码指定宽度高度,并且指定小圆点之间的距离
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);

            params.setMargins(5,0,5,0);

            linearLayout.addView(imageView,params);
        }

    }


    private String streamToString(InputStream inputStream,String charset) {
        try {
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream,charset);

            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            String s = null;
            StringBuilder builder = new StringBuilder();
            while ((s = bufferedReader.readLine()) != null){
                builder.append(s);
            }

            bufferedReader.close();
            return builder.toString();

        } catch (Exception e) {
            e.printStackTrace();
        }

        return  null;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
校园悬赏任务平台对字典管理、论坛管理、任务资讯任务资讯公告管理、接取用户管理、任务管理、任务咨询管理、任务收藏管理、任务评价管理、任务订单管理、发布用户管理、管理员管理等进行集中化处理。经过前面自己查阅的网络知识,加上自己在学校课堂上学习的知识,决定开发系统选择小程序模式这种高效率的模式完成系统功能开发。这种模式让操作员基于浏览器的方式进行网站访问,采用的主流的Java语言这种面向对象的语言进行校园悬赏任务平台程序的开发,在数据库的选择上面,选择功能强大的Mysql数据库进行数据的存放操作。校园悬赏任务平台的开发让用户查看任务信息变得容易,让管理员高效管理任务信息。 校园悬赏任务平台具有管理员角色,用户角色,这几个操作权限。 校园悬赏任务平台针对管理员设置的功能有:添加并管理各种类型信息,管理用户账户信息,管理任务信息,管理任务资讯公告信息等内容。 校园悬赏任务平台针对用户设置的功能有:查看并修改个人信息,查看任务信息,查看任务资讯公告信息等内容。 系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填写并提交这二者数据之后,管理员就可以进入系统后台功能操作区。项目管理页面提供的功能操作有:查看任务,删除任务操作,新增任务操作,修改任务操作。任务资讯公告信息管理页面提供的功能操作有:新增任务资讯公告,修改任务资讯公告,删除任务资讯公告操作。任务资讯公告类型管理页面显示所有任务资讯公告类型,在此页面既可以让管理员添加新的任务资讯公告信息类型,也能对已有的任务资讯公告类型信息执行编辑更新,失效的任务资讯公告类型信息也能让管理员快速删除。
ViewPager嵌套ViewPager的实现可以通过使用Fragment来实现。具体步骤如下: 1. 创建外层ViewPager的适配器,内层ViewPager的适配器和内层ViewPager的Fragment适配器; 2. 在外层ViewPager的Fragment中创建内层ViewPager,并设置内层ViewPager的适配器为内层ViewPager的适配器; 3. 在内层ViewPager的Fragment中创建需要的子Fragment,并设置内层ViewPager的Fragment适配器为子Fragment的适配器。 代码示例: ```java public class OuterFragment extends Fragment { private ViewPager mInnerViewPager; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_outer, container, false); mInnerViewPager = view.findViewById(R.id.inner_view_pager); InnerPagerAdapter innerPagerAdapter = new InnerPagerAdapter(getChildFragmentManager()); mInnerViewPager.setAdapter(innerPagerAdapter); return view; } private class InnerPagerAdapter extends FragmentPagerAdapter { public InnerPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return InnerFragment.newInstance(position); } @Override public int getCount() { return 3; } } } public class InnerFragment extends Fragment { private ViewPager mSubViewPager; public static InnerFragment newInstance(int position) { InnerFragment fragment = new InnerFragment(); Bundle args = new Bundle(); args.putInt("position", position); fragment.setArguments(args); return fragment; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_inner, container, false); mSubViewPager = view.findViewById(R.id.sub_view_pager); SubPagerAdapter subPagerAdapter = new SubPagerAdapter(getChildFragmentManager()); mSubViewPager.setAdapter(subPagerAdapter); return view; } private class SubPagerAdapter extends FragmentPagerAdapter { public SubPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return SubFragment.newInstance(position); } @Override public int getCount() { return 3; } } } public class SubFragment extends Fragment { public static SubFragment newInstance(int position) { SubFragment fragment = new SubFragment(); Bundle args = new Bundle(); args.putInt("position", position); fragment.setArguments(args); return fragment; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_sub, container, false); return view; } } ``` 其中,fragment_outer.xml、fragment_inner.xml和fragment_sub.xml分别对应外层ViewPager的Fragment、内层ViewPager的Fragment和内层ViewPager的子Fragment的布局文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值