倒计时跳转加PullToRefreshScrollView上下拉刷新加载,上方图片轮播

本篇博客介绍了一个包含计时跳转功能的主页面及具备下拉刷新功能的第二个页面的实现方法。主页面通过倒计时后自动跳转到第二个页面,而第二个页面则使用了PullToRefresh库实现下拉刷新的功能,并展示了如何配置ViewPager来展示轮播图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

布局activity_main中:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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.example.com.day426.MainActivity"
    android:background="@mipmap/ee">


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="400dp"
        android:id="@+id/tvshou"
        android:textColor="#FF6B0F"
        android:text="5秒后跳转"
        />

</RelativeLayout>

MainActivity:

package com.example.com.day426; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.TextView; import java.util.Timer; import java.util.TimerTask; public class MainActivity extends AppCompatActivity { private TextView tvshou; private int time = 5; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tvshou = findViewById(R.id.tvshou); final Timer timer = new Timer(); TimerTask timerTask = new TimerTask() { @Override public void run() { runOnUiThread(new Runnable() { @Override public void run() { if (time>0){ time--; tvshou.setText(time+"后跳转"); }else { timer.cancel(); Intent intent = new Intent(MainActivity.this, Second.class); startActivity(intent); } } }); } }; timer.schedule(timerTask, 0, 1000); } }
第二个页面:
布局:
<?xml version="1.0" encoding="utf-8"?>
<com.handmark.pulltorefresh.library.PullToRefreshScrollView
    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"
    android:id="@+id/psv"
    tools:context="com.example.com.day426.Second">

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



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

        </android.support.v4.view.ViewPager>
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:id="@+id/lin_point"
            android:background="#f00"
            android:layout_weight="1">
        </LinearLayout>



        <com.example.com.day426.MylistView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/mylv" >

        </com.example.com.day426.MylistView>

    </LinearLayout>
</com.handmark.pulltorefresh.library.PullToRefreshScrollView>

第二个页面代码:

package com.example.com.day426;

import android.graphics.Bitmap;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.ScrollView;

import com.example.com.day426.util.MyTask;
import com.google.gson.Gson;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshScrollView;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;

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

public class Second extends AppCompatActivity {

    private PullToRefreshScrollView psv;
    private DisplayImageOptions options;
    private ViewPager vp;
    private int num=10;
    private int one=1;
    private int type;
    private List<ImageView> li = new ArrayList<>();
    private ArrayList<String> as;
    private List<Reqbean.NewslistBean>list=new ArrayList<>();
    private MylistView mylv;
private String urldata = "http://api.tianapi.com/social/?key=48a7d7193e11bd2dd4a683b6e2f90a4f&num="+num;

    private Handler myHandler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            int position = vp.getCurrentItem();
            position++;

            vp.setCurrentItem(position);
            //调用方法
            ins(position % as.size());
            sendEmptyMessageDelayed(0, 1000);
        }
    };
    private LinearLayout lin_point;

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

        psv = findViewById(R.id.psv);
        vp = findViewById(R.id.vp);
        mylv = findViewById(R.id.mylv);
        lin_point = findViewById(R.id.lin_point);
        intpsv();
        //ins();
        getdatas();


        options = new DisplayImageOptions.Builder()
                .cacheInMemory(true)//使用内存缓存
                .cacheOnDisk(true)//使用磁盘缓存
                .showImageOnLoading(R.mipmap.ic_launcher)//设置正在下载的图片
                .showImageForEmptyUri(R.mipmap.ic_launcher)//url为空或请求的资源不存在时
                .showImageOnFail(R.mipmap.ic_launcher)//下载失败时显示的图片
                .bitmapConfig(Bitmap.Config.RGB_565)//设置图片色彩模式 1px=2字节
                .imageScaleType(ImageScaleType.EXACTLY)//设置图片的缩放模式
                //displayer(new RoundedBitmapDisplayer(100))//设置圆角 30代表半径 自定义
                .build();
    }
   /* private void showPics(List<Reqbean.NewslistBean> data) {
        as.clear();
        //为轮播图添加地址
        as.add("http://365jia.cn/uploads/" + data.get(0).getPicUrl());
        as.add("http://365jia.cn/uploads/" + data.get(1).getPicUrl());
        as.add("http://365jia.cn/uploads/" + data.get(2).getPicUrl());
    }*/


    private void getdatas() {
        MyTask myTask = new MyTask(new MyTask.Icallbacks() {
            @Override
            public void updateUiByjson(String jsonstr) {
                Gson gson = new Gson();
                Reqbean reqbean = gson.fromJson(jsonstr, Reqbean.class);
                List<Reqbean.NewslistBean> newslist = reqbean.getNewslist();


                if (type==1){
                   list.clear();
                }

                list.addAll(reqbean.getNewslist());


                as = new ArrayList<>();
                for (int i = 0; i < newslist.size(); i++) {
                    String picUrl = newslist.get(i).getPicUrl();
                    as.add(picUrl);
                }


                //判断
                if (one==1){
                    for (int i = 0; i < newslist.size(); i++) {

                        ImageView iv = new ImageView(Second.this);
                        if (i == 0) {
                            iv.setBackgroundResource(R.drawable.s);

                        } else {
                            iv.setBackgroundResource(R.drawable.a);
                        }
                        lin_point.addView(iv);

                        li.add(iv);
//                    li.clear();
                        //设置小圆点的margin值
                        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, 1);
                        lp.setMargins(5, 10, 5, 10);
                        iv.setLayoutParams(lp);
                    }
                }

                vp.setCurrentItem(5 * 10);//设置默认显示的页面
                vp.setAdapter(new Myvpadapter());
                mylv.setAdapter(new MyAdapter(Second.this,newslist));
                myHandler.sendEmptyMessageDelayed(0,1000);
            }
        });

        myTask.execute(urldata);

        psv.onRefreshComplete();
    }

    private void intpsv() {

        psv.setMode(PullToRefreshBase.Mode.BOTH);

        psv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ScrollView> refreshView) {
                one=2;
                type = 1;
                num = 10;
                urldata = "http://api.tianapi.com/social/?key=48a7d7193e11bd2dd4a683b6e2f90a4f&num=" + num;
                myHandler.removeCallbacksAndMessages(null);
                getdatas();
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ScrollView> refreshView) {
                one=2;
                type = 2;
                num+=10;
myHandler.removeCallbacksAndMessages(null);
                urldata = "http://api.tianapi.com/social/?key=48a7d7193e11bd2dd4a683b6e2f90a4f&num=" + num;
                getdatas();
            }
        });
    }

    private class Myvpadapter extends PagerAdapter {
        @Override
        public int getCount() {
            return Integer.MAX_VALUE;
        }

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

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            ImageView img = new ImageView(Second.this);

            //img.setImageResource(R.drawable.default_ptr_flip);

            Log.d("--", "instantiateItem: "+img);
            ImageLoader.getInstance().displayImage(as.get(position%as.size()),img,options);

            container.addView(img);

            return img;
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView((View) object);
        }
    }
    private void ins(int pageIndex) {
        Log.d("aaa=========", li.size()+"dasfsdfsdfsdf");
        for (int i = 0; i < li.size(); i++) {
            if (i == pageIndex) {
                li.get(i).setImageResource(R.drawable.s);//设置为选中的
            } else {
                li.get(i).setImageResource(R.drawable.a);
            }

        }
    }

}
注:适配器和Bean类都一样

自定义MyListview:
package com.example.com.day426;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.ListView;

/**
 * Created by 联想 on 2018/4/26.
 */

class MylistView extends ListView{
    public MylistView(Context context) {
        super(context);
    }

    public MylistView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MylistView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int i = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, i);
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值