PullToRefreshScrollView+HorizontalScrollView

package com.example.com.zhousan;

import android.graphics.Color;

import android.os.AsyncTask;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;

import android.os.Bundle;
import android.view.View;
import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.ScrollView;
import android.widget.TextView;

import com.google.gson.Gson;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshScrollView;

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

public class MainActivity extends FragmentActivity {

    String pathlunbo="https://www.zhaoapi.cn/ad/getAd";
    private HorizontalScrollView hsv;
    private LinearLayout lin;
    private ViewPager vp;
    private ViewPager vpo;
    private List<String > list=new ArrayList<>();
    private List<TextView > menus=new ArrayList<>();
    private TextView textoo;
    private  String string;
    private  String stringone;
    private int pageIndex=1;
    private String urlone="https://api.tianapi.com/wxnew/?key=48a7d7193e11bd2dd4a683b6e2f90a4f&num=10&page="+pageIndex;

    private int operType=1;//1:刷新 2:加载更多
    private int i;
    private Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            vpo.setCurrentItem(msg.what);
            i++;
            handler.sendEmptyMessageDelayed(i,1000);
        }
    };
    private List<String> listone;
    private PullToRefreshScrollView scrollview;
    private LinearLayout linone;
    private ListView listviewone;
    private Myabapter myabapter;
    private List<Beantwo.NewslistBean> newslist;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //找到控件
        hsv = findViewById(R.id.hsv);
        lin = findViewById(R.id.lin);
        vp = findViewById(R.id.vp);
        vpo = findViewById(R.id.vpo);
        //下拉
        scrollview = findViewById(R.id.scrollview);
        linone = findViewById(R.id.linone);
        listviewone = findViewById(R.id.listviewone);


        initscrollview();
        requestNetData();
        getbuju();

        //
        vp.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
            @Override
            public Fragment getItem(int position) {
                content content = new content();
                Bundle bundle = new Bundle();
                bundle.putString("data",list.get(position));
                content.setArguments(bundle);

                return content;
            }

            @Override
            public int getCount() {
                return list.size();
            }
        });
        vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
            //设置颜色
                changecolor(position);
                moveMenu(position);
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
        Lunbo lunbo = new Lunbo();
        lunbo.execute();

    }
    public void moveMenu(int index){
        TextView textone = menus.get(index);
        float x = textone.getX();//在x轴上的坐标

        //滚动到指定的位置
        hsv.scrollTo((int)x,0);



    }
    //改变字体颜色
   private void changecolor(int index ){
        for (int i = 0; i < menus.size(); i++) {
            if(i==index){
                menus.get(i).setTextColor(Color.RED);
            }else{
                menus.get(i).setTextColor(Color.BLACK);
            }
       }
    }

    //添加布局
    private void getbuju(){
        list.add("刘大");
        list.add("王二嘛");
        list.add("张三");
        list.add("李四");
        list.add("钱五");
        list.add("赵六");
        list.add("田七");
        list.add("龟八");
        list.add("死九");
        list.add("常十");
        list.add("杨十一");
        list.add("罗十二");
        list.add("十三娘");
        for (int i = 0; i <list.size() ; i++) {
            textoo = new TextView(MainActivity.this);
            textoo.setText(list.get(i));
            if(i==0){
                textoo.setTextColor(Color.RED);
            }else{
                textoo.setTextColor(Color.BLACK);
            }
            //记录下标志
            textoo.setTag(i);
            //自定义主键
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
            params.setMargins(0,5,10,5);
            textoo.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    String menu = ((TextView) view).getText().toString();
                    //   Toast.makeText(Fragmentone.this,(Integer) view.getTag()+":"+menu,Toast.LENGTH_SHORT).show();
                    vp.setCurrentItem((Integer) view.getTag());
                }
            });
            lin.addView(textoo,params);
            menus.add(textoo);
        }

    }
  class Lunbo extends AsyncTask<String,Void ,String >{
      @Override
      protected String doInBackground(String... strings) {
          try {
              URL url=new URL(pathlunbo);
              HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
              urlConnection.setRequestMethod("GET");
              urlConnection.setConnectTimeout(5000);
              urlConnection.setReadTimeout(5000);
              if(urlConnection.getResponseCode()==200){
                  InputStream inputStream = urlConnection.getInputStream();
                  ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
                  byte[] b=new byte[1024];
                  int len=-1;
                  while ((len=inputStream.read(b))!=-1){
                      outputStream.write(b,0,len);
                  }
                  string = outputStream.toString();
              }
          } catch (Exception e) {
              e.printStackTrace();
          }
          return string;


      }

      @Override
      protected void onPostExecute(String s) {
          super.onPostExecute(s);
          Gson gson =new Gson();
          Beanone beanone = gson.fromJson(s, Beanone.class);
          List<Beanone.DataBean> data = beanone.getData();
          listone = new ArrayList<>();
          for (int i = 0; i < data.size(); i++) {
              String icon = data.get(i).getIcon();
              listone.add(icon);
          }
          vpo.setCurrentItem(listone.size()*100);
          vpo.setAdapter(new Zdlunboabapter(MainActivity.this, listone));
          i=vpo.getCurrentItem();
          handler.sendEmptyMessageDelayed(i,1000);



      }

      @Override
      protected void onPreExecute() {
          super.onPreExecute();
      }

      @Override
      protected void onProgressUpdate(Void... values) {
          super.onProgressUpdate(values);
      }

  }
    private void requestNetData(){
        Myasync myasync = new Myasync();
        myasync.execute();
    }
   private void initscrollview(){
        scrollview.setMode(PullToRefreshScrollView.Mode.BOTH);
        scrollview.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ScrollView> refreshView) {
                //下拉刷新
                operType=1;
                pageIndex=1;
                urlone="https://api.tianapi.com/wxnew/?key=48a7d7193e11bd2dd4a683b6e2f90a4f&num=10&page="+pageIndex;
                requestNetData();
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ScrollView> refreshView) {
                //上拉加载
                operType=2;
                pageIndex++;
                urlone="https://api.tianapi.com/wxnew/?key=48a7d7193e11bd2dd4a683b6e2f90a4f&num=10&page="+pageIndex;
                requestNetData();
            }
        });
   }
    public void setLvAdapter(){
        if(myabapter==null){

            myabapter = new Myabapter(MainActivity.this, newslist);
            listviewone.setAdapter(myabapter);
        }else {
            myabapter.notifyDataSetChanged();
        }
    }
         class Myasync extends AsyncTask<String,Void,String>{

             @Override
             protected String doInBackground(String... strings) {

                 try {
                     URL url=new URL(urlone);
                     HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                     urlConnection.setRequestMethod("GET");
                     urlConnection.setConnectTimeout(5000);
                     urlConnection.setReadTimeout(5000);
                     if(urlConnection.getResponseCode()==200){
                         InputStream inputStream = urlConnection.getInputStream();
                         ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
                         byte[] b=new byte[1024];
                         int len=-1;
                         while ((len=inputStream.read(b))!=-1){
                             outputStream.write(b,0,len);
                         }
                         stringone = outputStream.toString();
                     }
                 } catch (Exception e) {
                     e.printStackTrace();
                 }
                 return stringone;

             }

             @Override
             protected void onProgressUpdate(Void... values) {
                 super.onProgressUpdate(values);
             }

             @Override
             protected void onPreExecute() {
                 super.onPreExecute();
             }

             @Override
             protected void onPostExecute(String s) {
                 super.onPostExecute(s);
                 Gson gson=new Gson();
                 Beantwo beantwo = gson.fromJson(s, Beantwo.class);
                 newslist = beantwo.getNewslist();
                 //设置适配器
                 setLvAdapter();

                 //关闭头尾视图
                 scrollview.onRefreshComplete();


             }
         }
}
 
 
 
 
 
 
package com.example.com.zhousan;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import java.util.List;

/**
 * Created by 丶未央 on 2018/1/11.
 */

class Myabapter extends BaseAdapter{
    Context context;
    List<Beantwo.NewslistBean> newslist;
    public Myabapter(Context context, List<Beantwo.NewslistBean> newslist) {
        this.context=context;
        this.newslist=newslist;
    }

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

    @Override
    public Object getItem(int i) {
        return newslist.get(i);
    }

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

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        Holder holder;
        if(view==null){
            view=View.inflate(context,R.layout.one,null);
             holder = new Holder();
             holder.textone=view.findViewById(R.id.texttwo);
             view.setTag(holder);
        }else{
            holder= (Holder) view.getTag();
        }
        holder.textone.setText(newslist.get(i).getTitle());
        return view;
    }
    private class Holder{
        TextView textone;
    }
}

 
 
 
package com.example.com.zhousan;

import android.content.Context;
import android.graphics.Bitmap;
import android.os.Environment;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;

import java.io.File;
import java.util.List;

/**
 * Created by 丶未央 on 2018/1/11.
 */

class Zdlunboabapter extends PagerAdapter {
    Context context;
    List<String> listone;
    private final DisplayImageOptions options;

    public Zdlunboabapter(Context context, List<String> listone) {
        this.context=context;
        this.listone=listone;
        //1.初使化--进行一下全局配置 Application
        File cachefile= new File(Environment.getExternalStorageDirectory().getPath()+"/images");
        ImageLoaderConfiguration configuration=new ImageLoaderConfiguration.Builder(context)
                .memoryCacheExtraOptions(400, 700)//缓存图片最大的长和宽
                .threadPoolSize(3)//线程池的数量
                .threadPriority(4)
                .memoryCacheSize(20*1024*1024)//设置内存缓存区大小
                .diskCacheSize(80*1024*1024)//设置sd卡缓存区大小
                .diskCache(new UnlimitedDiscCache(cachefile))//自定义sd卡缓存目录
                .writeDebugLogs()//打印日志内容
                .diskCacheFileNameGenerator(new Md5FileNameGenerator())//给缓存的文件名进行md5加密处理
                .build();
        ImageLoader.getInstance().init(configuration);
//2.创建displayImageoptions类
        //使用内存缓存
//使用磁盘缓存
//设置正在下载的图片
//url为空或请求的资源不存在时
//下载失败时显示的图片
//设置图片色彩模式 1px=2字节
//设置图片的缩放模式
//设置圆角 30代表半径 自定义
        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();

    }

    @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 imageView = new ImageView(context);
        //3.图片加载
        ImageLoader.getInstance().displayImage(listone.get(position%listone.size()),imageView,options);
        container.addView(imageView);
        return imageView;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View) object);
    }
}


                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值