Horizontal+异步+pullTorefresh+viewPager(本地图片)+每页都有数据
来源:互联网 发布:linux shadowsock 编辑:程序博客网 时间:2024/06/05 10:19
//main<?xml version="1.0" encoding="utf-8"?><LinearLayout android:orientation="vertical" 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="bbb.bwie.com.heqi.MainActivity" > <HorizontalScrollView android:id="@+id/hs" android:layout_width="match_parent" android:layout_height="wrap_content" > <LinearLayout android:id="@+id/ll" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" > </LinearLayout> </HorizontalScrollView> <android.support.v4.view.ViewPager android:id="@+id/vp" android:layout_width="match_parent" android:layout_height="wrap_content"> </android.support.v4.view.ViewPager></LinearLayout>//pullTorefresh布局<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <com.handmark.pulltorefresh.library.PullToRefreshListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/pt" > </com.handmark.pulltorefresh.library.PullToRefreshListView></LinearLayout><?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/img" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/name" /></LinearLayout>//viewPagwer布局<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="300dp" android:id="@+id/vp" ></android.support.v4.view.ViewPager> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/ll" android:orientation="horizontal" ></LinearLayout></LinearLayout><?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/img2" /></LinearLayout>import android.graphics.Color;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.view.ViewGroup;import android.widget.HorizontalScrollView;import android.widget.LinearLayout;import android.widget.TextView;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity implements View.OnClickListener { private HorizontalScrollView hs; private LinearLayout ll; private ViewPager vp; private String[] titles; private ArrayList<TextView> list; List<Fragment> list2=new ArrayList<Fragment>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); hs =(HorizontalScrollView)findViewById(R.id.hs); ll =(LinearLayout)findViewById(R.id.ll); vp =(ViewPager)findViewById(R.id.vp); titles = new String[]{"福利", "Android", "iOS", "休息视频", "拓展资源", "前端", "all"}; data(); list =new ArrayList<TextView>(); for (int i=0;i<titles.length;i++){ TextView view = new TextView(this); view.setText(titles[i]); view.setTextSize(20); if(i==0){ view.setTextColor(Color.RED); }else{ view.setTextColor(Color.BLACK); } view.setOnClickListener(this); view.setId(i+10000); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); params.setMargins(20,10,20,10); ll.addView(view,params); list.add(view); } vp.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) { @Override public Fragment getItem(int position) { return list2.get(position); } @Override public int getCount() { return list2.size(); } @Override public Object instantiateItem(ViewGroup container, int position) { return super.instantiateItem(container, position); } }); vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { for (int i=0;i<list.size();i++){ if(position==i){ list.get(i).setTextColor(Color.RED); }else{ list.get(i).setTextColor(Color.BLACK); } } TextView textView = list.get(position); int width = textView.getWidth();//获取宽度 //计算该滑到哪里 hs.scrollTo((width+20)*position,0);//viewpager滑动时与滚动控件想配合一起滑动 } @Override public void onPageScrollStateChanged(int state) { } }); } private void data() { fragment2 f1= new fragment2(titles[0]); fragment2 f2 = new fragment2(titles[1]); fragment2 f3 = new fragment2(titles[2]); fragment2 f4 = new fragment2(titles[3]); fragment2 f5 = new fragment2(titles[4]); fragment2 f6 = new fragment2(titles[5]); fragment2 f7 = new fragment2(titles[6]); list2.add(f1); list2.add(f2); list2.add(f3); list2.add(f4); list2.add(f5); list2.add(f6); list2.add(f7); } @Override public void onClick(View view) { int id = view.getId(); vp.setCurrentItem(id-10000); }}import android.os.AsyncTask;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.TextView;import com.google.gson.Gson;import com.handmark.pulltorefresh.library.PullToRefreshBase;import com.handmark.pulltorefresh.library.PullToRefreshListView;import com.nostra13.universalimageloader.core.ImageLoader;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;import java.net.URLEncoder;import java.util.ArrayList;import java.util.List;/** * Created by HQ on 2017/9/19. */public class fragment2 extends Fragment { private String a; private ViewPager vp; private LinearLayout ll; List<Vpbean> vplist=new ArrayList<Vpbean>(); public fragment2(String b) { a="http://gank.io/api/data/"+ URLEncoder.encode(b)+"/10/"+i; } private View view; List<User> list = new ArrayList<User>(); private mydata mydata; int i = 1; private URL url; private PullToRefreshListView pt; Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); int i = vp.getCurrentItem() + 1; vp.setCurrentItem(i); handler.sendEmptyMessageDelayed(0,2000); } }; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { view = inflater.inflate(R.layout.fragment, container, false); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); //获取控件 pt = (PullToRefreshListView) view.findViewById(R.id.pt); //添加头布局 View vvp = View.inflate(getActivity(), R.layout.vp, null); vp =(ViewPager)vvp.findViewById(R.id.vp); ll =(LinearLayout)vvp.findViewById(R.id.ll); ListView listView = pt.getRefreshableView(); listView.addHeaderView(vvp); pt.setMode(PullToRefreshBase.Mode.BOTH); //PullToRefreshListView适配器 mydata = new mydata(); pt.setAdapter(mydata); //路径可变 new Myasynctask().execute(a); //PullToRefreshListView监听事件 pt.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) { ll.removeAllViews(); list.clear(); i = 1; new Myasynctask().execute("http://gank.io/api/data/Android/10/1"); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) { i++; new Myasynctask().execute("http://gank.io/api/data/Android/10/"+i); } }); vplist.clear(); vplist.add(new Vpbean(R.mipmap.a)); vplist.add(new Vpbean(R.mipmap.b)); vplist.add(new Vpbean(R.mipmap.c)); vplist.add(new Vpbean(R.mipmap.d)); } class vpmydata 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) { View view = View.inflate(getActivity(),R.layout.vptextview,null); ImageView img=(ImageView)view.findViewById(R.id.img2); img.setImageResource(vplist.get(position%vplist.size()).vpimg); container.addView(view); return view; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View)object); } } class Myasynctask extends AsyncTask<String, Void, String> { private StringBuilder builder; private ArrayList<ImageView> imagelist; private ImageView img; @Override protected String doInBackground(String... strings) { try { url = new URL(strings[0]); URLConnection connection = url.openConnection(); InputStream stream = connection.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(stream)); builder = new StringBuilder(); String tem = ""; while ((tem = reader.readLine()) != null) { builder.append(tem); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return builder.toString(); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson = new Gson(); Bean bean = gson.fromJson(s, Bean.class); List<Bean.ResultsBean> results = bean.getResults(); for (int i = 0; i < results.size(); i++) { String desc = results.get(i).getDesc(); list.add(new User(desc,"http://img.gank.io/9f51b7bc-73d3-4ce4-bd59-c61cb0c64325")); } mydata.notifyDataSetChanged(); pt.onRefreshComplete(); //加点(先不做) nodata(); vp.setAdapter(new vpmydata()); handler.sendEmptyMessageDelayed(0,2000); //ViewPager监听事件 vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { for (int i=0;i<imagelist.size();i++){ if(position%vplist.size()==i){ imagelist.get(position%vplist.size()).setImageResource(R.drawable.dot_focuable); }else{ imagelist.get(i).setImageResource(R.drawable.dot_normal); } } } @Override public void onPageScrollStateChanged(int state) { } }); } private void nodata() { ll.removeAllViews(); imagelist =new ArrayList<ImageView>(); if(imagelist !=null){ imagelist.clear(); } for (int i=0;i<vplist.size();i++){ img = new ImageView(getActivity()); if(i==vp.getCurrentItem()){ img.setImageResource(R.drawable.dot_focuable); }else{ img.setImageResource(R.drawable.dot_normal); } LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(20, 20); params.setMargins(10,0,10,0); imagelist.add(img); ll.addView(img,params); } } } //PullToRefreshListView适配器 class mydata extends BaseAdapter { @Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return list.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder vh; if (view == null) { vh = new ViewHolder(); view = View.inflate(getActivity(), R.layout.textview, null); vh.name = (TextView) view.findViewById(R.id.name); vh.img = (ImageView) view.findViewById(R.id.img); view.setTag(vh); } else { vh = (ViewHolder) view.getTag(); } vh.name.setText(list.get(i).getName()); ImageLoader.getInstance().displayImage(list.get(i).getUrl(), vh.img); return view; } class ViewHolder { TextView name; ImageView img; } }}BeanUser用于pullTorefreshVpbean用于viewPagerimport android.app.Application;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;/** * Created by HQ on 2017/9/19. */public class Appi extends Application{ @Override public void onCreate() { super.onCreate(); ImageLoaderConfiguration build = new ImageLoaderConfiguration.Builder(this).build(); ImageLoader.getInstance().init(build); }}
阅读全文
0 0
- Horizontal+异步+pullTorefresh+viewPager(本地图片)+每页都有数据
- Horizontal+异步+pullTorefresh+viewPager+侧滑(XListView)
- Horizontal+异步+pullTorefresh+viewPager+侧滑(XListView)
- Horizontal+ViewPager
- ListView GridView ViewPager 异步 加载网络图片 缓存到本地
- viewpager实现图片轮番(本地图片)
- ViewPager异步加载图片
- ViewPager读取本地图片
- 对 PullToRefresh、viewpager和异步任务的总和使用
- 异步加载本地 图片
- 使用Viewpager制作图片阅读器(3)-读取本地图片
- 安卓ViewPager+RadioGroup实现多组图片滑动展示(每组图片不定量)
- ViewPager动态加载本地图片
- 本地图片的异步加载
- pulltorefresh+viewpager fragment+HorizontalScrollView
- android listview viewpager 异步加载图片 headerview
- android ViewPager 简单多线程加载本地图片
- viewPager本地图片自动轮播
- 发送验证码的倒计时。GCD方法
- 九度题目1124:Digital Roots
- sscanf 与 正则表达式
- Android 内存
- 自定义Android系统级权限组
- Horizontal+异步+pullTorefresh+viewPager(本地图片)+每页都有数据
- 两个HTML页面之间传值的问题
- Android推荐一个查看资源文件引用次数的小插件
- GPIO驱动框架
- 虚拟机字节码执行引擎
- JDK9干货
- Java 访问权限控制
- openssl的加解密,签名,验签代码
- CRichEditDoc下保存文档出现\rtf1\ansi\ansicpg936\deff0的解决方法