//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; } } } Bean User用于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); } }
Horizontal+异步+pullTorefresh+viewPager(本地图片)+每页都有数据
最新推荐文章于 2018-11-20 19:43:20 发布