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); } }