栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

android开发ViewPager + PagerAdapter实现时时的界面和数据刷新

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

android开发ViewPager + PagerAdapter实现时时的界面和数据刷新

先看下面效果:

代码实现xml部分:

activity_main




    

    


    

    


        

 item_pic




    

 java代码

 MainActivity

package com.antbyte.viewpagerdemo;

import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;

import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.ViewPager;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private ViewPager view_pager;
    private LinearLayout dot_ll;
    MyViewPageAdapter pageAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        initAdapter();
        setData(1);
    }

    private int pagerPosition = 0;
    List mViewList = new ArrayList<>();

    private void initAdapter() {
        pageAdapter = new MyViewPageAdapter(mViewList);
        view_pager.setAdapter(pageAdapter);
        view_pager.addonPageChangeListener(new ViewPager.onPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                pagerPosition = position;
                for (int i = 0; i < dot_ll.getChildCount(); i++) {
                    if (i == pagerPosition) {
                        dot_ll.getChildAt(i).setBackgroundResource(R.drawable.shape_dot_2);
                    } else {
                        dot_ll.getChildAt(i).setBackgroundResource(R.drawable.shape_dot_1);
                    }
                }
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
    }

    private void initView() {
        view_pager = (ViewPager) findViewById(R.id.view_pager);
        dot_ll = (LinearLayout) findViewById(R.id.dot_ll);
    }


    public void one(View view) {
        setData(1);
    }

    public void multi(View view) {
        setData(3);
    }

    private void setData(int num) {
        dot_ll.removeAllViews();
        mViewList.clear();
        for (int i = 0; i < num; i++) {
            if (num > 1) {
                View dot_view = new View(this);
                LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(DensityUtil.dip2px(this, 7), DensityUtil.dip2px(this, 7));
                if (pagerPosition == i) {
                    dot_view.setBackgroundResource(R.drawable.shape_dot_2);
                } else {
                    dot_view.setBackgroundResource(R.drawable.shape_dot_1);
                }

                layoutParams.setMargins(10, 0, 0, 0);
                dot_view.setLayoutParams(layoutParams);
                dot_ll.addView(dot_view);
            }

            View view = getLayoutInflater().inflate(R.layout.item_pic, null);
            ImageView iv = view.findViewById(R.id.iv);
            switch (i) {
                case 0:
                    iv.setImageResource(R.mipmap.ic_pic1);
                    break;
                case 1:
                    iv.setImageResource(R.mipmap.ic_pic2);
                    break;
                case 2:
                    iv.setImageResource(R.mipmap.ic_pic3);
                    break;
            }
            mViewList.add(view);
        }

        pageAdapter.notifyDataSetChanged();

    }

}

适配器MyViewPageAdapter

package com.antbyte.viewpagerdemo;

import android.util.Log;
import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.viewpager.widget.PagerAdapter;

import java.util.List;

public class MyViewPageAdapter extends PagerAdapter {
    private List list_view;

    public MyViewPageAdapter(List list_view) {
        this.list_view = list_view;
    }

    @Override
    public int getCount() {
        Log.e("getCount-》", list_view.size() + "aaa");
        return list_view.size();
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == object;
    }

    @Override
    public int getItemPosition(@NonNull Object object) {
        return POSITION_NONE;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {

        Log.e("instantiateItem->", position + "aaa");
        try {
            container.addView(list_view.get(position));
            return list_view.get(position);
        } catch (Exception e) {
            return null;
        }
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        Log.e("instantiateItem->", "destroyItemaaa" + position);
        container.removeView((View) object);
    }


}

尺寸转换类DensityUtil

package com.antbyte.viewpagerdemo;

import android.content.Context;
import android.content.res.Resources;
import android.view.WindowManager;





public class DensityUtil {

    public static final String TAG = "DensityUtil";

    private static WindowManager windowManager;
    private static int width;
    private static int height;

    
    public static int dip2px(Context context, float dpValue) {
        Resources resources = context.getResources();
        float scale = 0;
        if(resources != null){
            scale = resources.getDisplayMetrics().density;
        }

        return (int) (dpValue * scale + 0.5f);
    }

    
    public static int px2dip(Context context, float pxValue) {
        Resources resources = context.getResources();
        float scale = 0;
        if(resources != null){
            scale = resources.getDisplayMetrics().density;
        }
        return (int) (pxValue / scale + 0.5f);
    }

    
    public static int px2sp(Context context, float pxValue) {
        Resources resources = context.getResources();
        float fontScale = 0;
        if(resources != null){
            fontScale = resources.getDisplayMetrics().scaledDensity;
        }
        return (int) (pxValue / fontScale + 0.5f);
    }

    
    public static int sp2px(Context context, float spValue) {
        Resources resources = context.getResources();
        float fontScale = 0;
        if(resources != null){
            fontScale = resources.getDisplayMetrics().scaledDensity;
        }
        return (int) (spValue * fontScale + 0.5f);
    }

}

小圆点shape_dot_1




    

    

shape_dot_2




    

资源下载地址:viewpager+PagerAdapter刷新数据-Android文档类资源-CSDN下载

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/532222.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号