//主界面
package com.example.myapplication;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
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 hrztsv;
private ViewPager vp;
private LinearLayout ll;
String[] tou;
List<TextView> arr;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找到控件
hrztsv = (HorizontalScrollView) findViewById(R.id.horizontalscrollview);
vp = (ViewPager) findViewById(R.id.viewpager);
ll = (LinearLayout) findViewById(R.id.linearlayout);
tou = new String[]{"福利","Android","iOS","休息视频","拓展资源","前端","all"};
arr = new ArrayList<TextView>();
for (int i = 0; i <tou.length ; i++) {
TextView tv = new TextView(MainActivity.this);
tv.setText(tou[i]);
tv.setId(i+1000);
tv.setOnClickListener(MainActivity.this);
if(i==0){
tv.setTextColor(Color.RED);
}else{
tv.setTextColor(Color.BLACK);
}
LinearLayout.LayoutParams lila = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);
lila.setMargins(20,10,20,10);
ll.addView(tv,lila);
arr.add(tv);
}
//适配器
MyAdpt ma = new MyAdpt(getSupportFragmentManager());
vp.setAdapter(ma);
vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
for(int n=0;n<arr.size();n++){
if(n==position){
arr.get(n).setTextColor(Color.RED);
}else{
arr.get(n).setTextColor(Color.BLACK);
}
}
TextView textView = arr.get(position);
int ii = textView.getWidth() / arr.size() * position;
hrztsv.smoothScrollBy(ii,0);
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
@Override
public void onClick(View view) {
}
//适配器
class MyAdpt extends FragmentPagerAdapter{
public MyAdpt(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return new MyFragment().getDizhi(arr.get(position).getText().toString());
}
@Override
public int getCount() {
return arr.size();
}
}
}
//Fragment
package com.example.myapplication;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
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.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.LinkedList;
import java.util.List;
/**
* author:Created by WangZhiQiang on 2017/9/19.
*/
public class MyFragment extends Fragment{
int index = 1;
List<Bean.ResultsBean> resu;
private PullToRefreshListView ptlv;
String mingzi = "Android";
LinkedList<Bean.ResultsBean> arr;
MyAdp mm;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = View.inflate(getActivity(),R.layout.item_pull,null);
ptlv = v.findViewById(R.id.pull_refresh_list);
return v;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Bundle arguments = getArguments();
mingzi = arguments.getString("lujing");
ptlv.setMode(PullToRefreshBase.Mode.BOTH);
arr = new LinkedList<Bean.ResultsBean>();
mm = new MyAdp();
ptlv.setAdapter(mm);
//查找地址
try {
new MyAstask().execute("http://gank.io/api/data/"+ URLEncoder.encode(mingzi,"UTF-8")+"/10/"+index);
ptlv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
try {
arr.clear();
index=1;
new MyAstask().execute("http://gank.io/api/data/"+URLEncoder.encode(mingzi,"UTF-8")+"/10/"+index);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
try {
index++;
new MyAstask().execute("http://gank.io/api/data/"+URLEncoder.encode(mingzi,"UTF-8")+"/10/"+index);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
//创建一个方法
public static Fragment getDizhi(String jiepath){
MyFragment myFragment = new MyFragment();
Bundle bundle = new Bundle();
bundle.putString("lujing",jiepath);
myFragment.setArguments(bundle);
return myFragment;
}
//异步加载
class MyAstask extends AsyncTask<String,Void,String>{
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(String string) {
super.onPostExecute(string);
//gosn解析
Gson gson = new Gson();
Bean be = gson.fromJson(string, Bean.class);
resu = be.getResults();
arr.addAll(resu);
mm.notifyDataSetChanged();
ptlv.onRefreshComplete();
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
//自动解析
@Override
protected String doInBackground(String... strings) {
try {
URL url = new URL(strings[0]);
HttpURLConnection hu = (HttpURLConnection) url.openConnection();
if (hu.getResponseCode()==200){
InputStream inputStream = hu.getInputStream();
BufferedReader b = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder sb = new StringBuilder();
String st = "";
while((st=b.readLine())!=null){
sb.append(st);
}
String to = sb.toString();
return to;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
//适配器
class MyAdp extends BaseAdapter{
@Override
public int getItemViewType(int position) {
Bean.ResultsBean resultsBea = arr.get(position);
if(resultsBea.getImages()==null){
return 1;
}
return 2;
}
@Override
public int getViewTypeCount() {
return 10;
}
@Override
public int getCount() {
return arr.size();
}
@Override
public Object getItem(int i) {
return arr.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
//得到视图
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
int itemViewType = getItemViewType(i);
Bean.ResultsBean result = arr.get(i);
switch (itemViewType){
case 1:
Adpt2 ad2;
if(view==null){
view = View.inflate(getActivity(),R.layout.listview_shitu2,null);
ad2 = new Adpt2();
ad2.tv2 = view.findViewById(R.id.tv2);
view.setTag(ad2);
}else{
ad2 = (Adpt2) view.getTag();
}
ad2.tv2.setText(result.getCreatedAt());
break;
case 2:
Adpt ad;
if(view==null){
view = View.inflate(getActivity(),R.layout.listview_item,null);
ad = new Adpt();
ad.img = view.findViewById(R.id.imag);
ad.tv = view.findViewById(R.id.tex);
view.setTag(ad);
}else{
ad = (Adpt) view.getTag();
}
ImageLoader.getInstance().displayImage(result.getImages().get(0),ad.img);
ad.tv.setText(result.getCreatedAt());
break;
}
return view;
}
class Adpt{
ImageView img;
TextView tv;
}
class Adpt2{
TextView tv2;
}
}
}
//app
package com.example.myapplication;
import android.app.Application;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
/**
* author:Created by WangZhiQiang on 2017/9/19.
*/
public class app extends Application{
@Override
public void onCreate() {
super.onCreate();
ImageLoaderConfiguration il = new ImageLoaderConfiguration.Builder(this).build();
ImageLoader.getInstance().init(il);
}
}
//布局 主布局
<?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.myapplication.MainActivity">
<HorizontalScrollView
android:id="@+id/horizontalscrollview"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/linearlayout"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"></LinearLayout>
</HorizontalScrollView>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/horizontalscrollview"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"></android.support.v4.view.ViewPager>
</RelativeLayout>
//PullToRefreshListView布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:id="@+id/pull_refresh_list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:cacheColorHint="#00000000"
android:divider="#19000000"
android:dividerHeight="4dp"
android:fadingEdge="none"
android:fastScrollEnabled="false"
android:footerDividersEnabled="false"
android:headerDividersEnabled="false"
android:smoothScrollbar="true" />
</RelativeLayout>
//控件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imag"
android:layout_width="match_parent"
android:layout_height="300dp" />
<TextView
android:id="@+id/tex"
android:layout_below="@id/imag"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
//字体大小
<?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">
<TextView
android:id="@+id/tv2"
android:textSize="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>