ViewPager 加 Gridlist 展示 界面 加xml

主xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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=".MainActivity"
    android:orientation="vertical"
    >



    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="240dp">

            <android.support.v4.view.ViewPager
                android:id="@+id/main_viewpager"
                android:layout_width="match_parent"
                android:layout_height="240dp">

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


            <LinearLayout
                android:id="@+id/ll_points"
                android:layout_width="match_parent"
                android:layout_height="30dp"
                android:orientation="horizontal"
                android:layout_alignParentBottom="true"
                android:gravity="center"

                >
            </LinearLayout>
        </RelativeLayout>

        <GridView
            android:id="@+id/main_gridview"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:numColumns="2"
            ></GridView>

    </LinearLayout>

</LinearLayout>
 
 

主activity  界面

public class MainActivity extends AppCompatActivity {

    private ViewPager viewpager;
    private LinearLayout ll_points;
    private List<ImageView> imageview = new ArrayList<>();
    private List<ImageView> points = new ArrayList<>();


    //使用handler设置自动轮播
    private Handler handler = new Handler() {

        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);

            viewpager.setCurrentItem(viewpager.getCurrentItem() + 1);
            handler.sendEmptyMessageDelayed(0, 2000);

        }
    };
    private GridView gridview;

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

        //初始化页面
        initViews();

        //获取网络数据
        initDatasForNet();
    }


    public void initDatasForNet() {

        HttpUtils httpUtils = HttpUtils.getHttpUtils();
        boolean b = httpUtils.hasNet(MainActivity.this);

//判断是否有网
        if (b) {
            httpUtils.get(url1);

            httpUtils.setHttpListener(new HttpUtils.HttpListener() {
                @Override
                public void getSuccess(String json) {


                    //gson解析
                    Gson gson = new Gson();
                    NewsBean newsBean = gson.fromJson(json, NewsBean.class);
                    //设置轮播图
                    List<NewsBean.DataBean.EssayBean> essay = newsBean.getData().getEssay();

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

                        String web_url = essay.get(i).getAuthor().get(0).getWeb_url();

                        ImageView imageView = new ImageView(MainActivity.this);

                        imageView.setScaleType(ImageView.ScaleType.FIT_XY);

                        ImageLoader.getInstance().displayImage(web_url, imageView, MyApp.getOptions());
                        imageview.add(imageView);
//添加小圆点
                        ImageView p = new ImageView(MainActivity.this);

                        p.setImageResource(R.drawable.select);
                        points.add(p);
                        //将圆点添加到布局中
                        ll_points.addView(p);
                    }

//设置默认圆点选中
                    points.get(0).setSelected(true);


                    MyPageAdapter adapter = new MyPageAdapter(imageview);
                    viewpager.setAdapter(adapter);
                    handler.sendEmptyMessageDelayed(0,2000);

                    List<NewsBean.DataBean.SerialBean> beanList = newsBean.getData().getSerial();
                    //创建gridview的适配器
                    MyBaseAdapter base = new MyBaseAdapter(MainActivity.this, beanList);
                    gridview.setAdapter(base);


                }

                @Override
                public void getError(String error) {

                }
            });

        }else{

        }


    }


    //初始化页面
    private void initViews() {

        viewpager = findViewById(R.id.main_viewpager);
        ll_points = findViewById(R.id.ll_points);
        gridview = findViewById(R.id.main_gridview);

//设置监听

        viewpager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {

                position = position % imageview.size();

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

                    if (i == position) {
                        points.get(i).setSelected(true);

                    } else {
                        points.get(i).setSelected(false);
                    }
                }
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });

        //页面销毁


    }
}
 
 
 
 MyAdapter   适配器
public class MyBaseAdapter extends BaseAdapter {
    private Context context;
    private List<NewsBean.DataBean.SerialBean> list;

    public MyBaseAdapter(Context context, List<NewsBean.DataBean.SerialBean> list) {
        this.context = context;
        this.list = list;
    }

    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int position) {
        return list.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if(convertView==null){
            convertView=View.inflate(context, R.layout.mybase,null);
            holder = new ViewHolder();
            holder.img=(ImageView) convertView.findViewById(R.id.my_img);
            holder.text=(TextView) convertView.findViewById(R.id.my_text);

            convertView.setTag(holder);
        }else{
            holder=(ViewHolder) convertView.getTag();
        }
        String pic=list.get(position).getAuthor().getWeb_url();
        ImageLoader.getInstance().displayImage(pic,holder.img, MyApp.getOptions());

        holder.text.setText(list.get(position).getTitle());
        return convertView;
    }
    class ViewHolder{
        ImageView img;
        TextView text;

    }
}
 
 
图片适配器  
MyPageAdapter
public class MyPageAdapter extends PagerAdapter{ private List< ImageView> list; public MyPageAdapter(List< ImageView> list) { this. list = list; } @Override public int getCount() { return Integer. MAX_VALUE; } @Override public boolean isViewFromObject( @NonNull View view, @NonNull Object object) { return view==object; } @NonNull @Override public Object instantiateItem( @NonNull ViewGroup container, int position) { position=position% list.size(); ImageView imageView = list.get(position); container.addView(imageView); return imageView; } @Override public void destroyItem( @NonNull ViewGroup container, int position, @NonNull Object object) { container.removeView(( ImageView)object); }}
MyGridView    GridView   
public class MyGridView extends GridView{ public MyGridView(Context context) { super(context); } public MyGridView(Context context, AttributeSet attrs) { super(context, attrs); } public MyGridView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } //因为和尺寸相关,所以在onMeasure里面处理,哪里有问题处理那个 @Override protected void onMeasure( int widthMeasureSpec, int heightMeasureSpec) { int height = MeasureSpec. makeMeasureSpec(Integer. MAX_VALUE >> 2, MeasureSpec. AT_MOST); super.onMeasure(widthMeasureSpec, height); }}
 
 
ConUtils 
public class ConUtils { public static String in(InputStream inputStream) throws IOException { InputStreamReader read = new InputStreamReader(inputStream); BufferedReader br = new BufferedReader(read); String s; StringBuffer stringBuffer = new StringBuffer(); while((s=br.readLine())!= null){ stringBuffer.append(s); } return stringBuffer.toString(); }}
 
 
 
 
HttpUtils 
public class HttpUtils { private HttpListener httpListener; private static final int SUCCESS = 0; private static final int ERROR = 1; @SuppressLint( "HandlerLeak") private Handler handler= new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage( msg); switch ( msg. what){ case SUCCESS: String s= (String) msg. obj; httpListener.getSuccess(s); break; case ERROR: String error= (String) msg. obj; httpListener.getError(error); break; } } }; //单例模式 private static HttpUtils httpUtils = new HttpUtils(); //私有构造方法 private HttpUtils() { } public static HttpUtils getHttpUtils() { if ( httpUtils == null) { httpUtils = new HttpUtils(); } return httpUtils; } //get请求 public void get( final String url) { new Thread() { @Override public void run() { try { URL u = new URL( url); HttpURLConnection con = (HttpURLConnection) u.openConnection(); con.setConnectTimeout( 5000); if (con.getResponseCode() == 200) { InputStream inputStream = con.getInputStream(); String json = ConUtils. in(inputStream); //发送消息 Message me = new Message(); me. what = SUCCESS; me. obj = json; //发送handler请求 handler.sendMessage(me); } } catch (Exception e) { e.printStackTrace(); Message m = new Message(); m. what = ERROR; m. obj = e.getMessage(); //发送handler请求 handler.sendMessage(m); } } }.start(); } public interface HttpListener{ void getSuccess(String json); void getError(String error); } public void setHttpListener(HttpListener httpListener){ this. httpListener=httpListener; } //判断 是否有网 public boolean hasNet(Context context){ ConnectivityManager cm= (ConnectivityManager) context.getSystemService(Context. CONNECTIVITY_SERVICE); NetworkInfo networkInfo = cm.getActiveNetworkInfo(); return networkInfo!= null; }}

猜你喜欢

转载自blog.csdn.net/qq_41637459/article/details/80418924