主函数代码
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
Button xqy;
Button zhuye;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
xqy = (Button) findViewById(R.id.qqy);
zhuye = (Button) findViewById(R.id.zhuye);
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.frag, new Zhuye());
transaction.commit();
zhuye.setBackgroundColor(Color.RED);
xqy.setBackgroundColor(Color.GRAY);
zhuye.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.frag, new Zhuye());
transaction.commit();
zhuye.setBackgroundColor(Color.RED);
xqy.setBackgroundColor(Color.GRAY);
}
});
xqy.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.frag, new Xql());
transaction.commit();
zhuye.setBackgroundColor(Color.GRAY);
xqy.setBackgroundColor(Color.RED);
}
});
}
}
主界面布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<android.support.v4.widget.DrawerLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:layout_width="150dp"
android:layout_height="match_parent"
android:layout_gravity="left"
android:background="#fff">
<ImageView
android:id="@+id/dl_img"
android:layout_width="50dp"
android:layout_height="50dp"
android:padding="10dp"
android:src="@mipmap/ic_launcher" />
<TextView
android:id="@+id/name1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/dl_img"
android:gravity="center"
android:padding="10dp"
android:text="aaaaa" />
<TextView
android:id="@+id/xw"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/name1"
android:gravity="center"
android:padding="10dp"
android:text="新闻" />
<TextView
android:id="@+id/yl"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/xw"
android:gravity="center"
android:padding="10dp"
android:text="娱乐" />
<TextView
android:id="@+id/sh"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/yl"
android:gravity="center"
android:padding="10dp"
android:text="社会" />
<TextView
android:id="@+id/js"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/sh"
android:gravity="center"
android:padding="10dp"
android:text="军事" />
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/ll"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:gravity="center"
android:orientation="horizontal">
<Button
android:id="@+id/zhuye"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="主页" />
<Button
android:id="@+id/qqy"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="详情页" />
</LinearLayout>
<FrameLayout
android:id="@+id/frag"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/ll"></FrameLayout>
</RelativeLayout>
</android.support.v4.widget.DrawerLayout>
</RelativeLayout>
主页代码
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.util.ArrayList;
import java.util.List;
public class Zhuye extends Fragment {
TabLayout tab;
ViewPager vp;
private List<String> list;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = View.inflate(getActivity(), R.layout.zy, null);
tab = v.findViewById(R.id.tab);
vp = v.findViewById(R.id.vp);
list = new ArrayList<>();
list.add("social");
list.add("guonei");
list.add("world");
list.add("huabian");
list.add("tiyu");
list.add("nba");
list.add("football");
list.add("keji");
list.add("startup");
list.add("apple");
vp.setAdapter(new FragmentPagerAdapter(getActivity().getSupportFragmentManager()) {
@Override
public CharSequence getPageTitle(int position) {
return list.get(position);
}
@Override
public Fragment getItem(int position) {
Fragments fragments = new Fragments();
Bundle bundle = new Bundle();
if (list.get(position).endsWith("social")) {
bundle.putString("name", "football");
} else if (list.get(position).endsWith("guonei")) {
bundle.putString("name", "apple");
} else if (list.get(position).endsWith("world")) {
bundle.putString("name", "world");
} else if (list.get(position).endsWith("huabian")) {
bundle.putString("name", "huabian");
} else if (list.get(position).endsWith("tiyu")) {
bundle.putString("name", "tiyu");
} else if (list.get(position).endsWith("nba")) {
bundle.putString("name", "nba");
} else if (list.get(position).endsWith("football")) {
bundle.putString("name", "football");
} else if (list.get(position).endsWith("keji")) {
bundle.putString("name", "keji");
} else if (list.get(position).endsWith("startup")) {
bundle.putString("name", "startup");
} else if (list.get(position).endsWith("apple")) {
bundle.putString("name", "apple");
}
fragments.setArguments(bundle);
return fragments;
}
@Override
public int getCount() {
return list.size();
}
});
tab.setupWithViewPager(vp);
return v;
}
}
主页布局
<?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"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.TabLayout
android:id="@+id/tab"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="false"
app:tabIndicatorColor="#052efc"
app:tabIndicatorHeight="5dp"
app:tabMode="scrollable"
app:tabSelectedTextColor="#f9ec03"
app:tabTextColor="#f204ce"></android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/tab"></android.support.v4.view.ViewPager>
</RelativeLayout>
详情页代码
import android.content.Context;
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.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import com.bigkoo.convenientbanner.ConvenientBanner;
import com.bigkoo.convenientbanner.holder.CBViewHolderCreator;
import com.bigkoo.convenientbanner.holder.Holder;
import com.bigkoo.convenientbanner.listener.OnItemClickListener;
import com.google.gson.Gson;
import com.jwenfeng.library.pulltorefresh.BaseRefreshListener;
import com.jwenfeng.library.pulltorefresh.PullToRefreshLayout;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Arrays;
import java.util.List;
public class Xql extends Fragment implements OnItemClickListener {
private String path;
private int shu = 10;
private ListView xqy_lv;
private GridView xqy_gv;
private PullToRefreshLayout pull;
private PullToRefreshLayout pull_1;
ConvenientBanner conven;
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == 0) {
JsonBean bean = (JsonBean) msg.obj;
list = bean.getNewslist();
Log.i("aaa", list.toString());
myad = new Myad();
xqy_gv.setAdapter(myad);
myad1 = new Myad1();
xqy_lv.setAdapter(myad1);
}
}
};
private List<JsonBean.NewslistBean> list;
private String[] imgs = new String[]{
"http://image.wufazhuce.com/FvVmWbqlle7jlUCTeozoval9NyBH",
"http://image.wufazhuce.com/FmDRnQ1XhReHRHB4jYqAPSx8htsP",
"http://image.wufazhuce.com/Fu6o0fqKHsI_TjdpPX3N2Kc99vNP",
"http://image.wufazhuce.com/FuPgOcbGDD9__fyuCdPBXb5pbA1C"};
List<String> datas;
ImageLoader imageLoader;
private Myad myad;
private Myad1 myad1;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = View.inflate(getActivity(), R.layout.xqy, null);
xqy_lv = v.findViewById(R.id.xqy_lv);
xqy_gv = v.findViewById(R.id.xqy_gv);
conven = v.findViewById(R.id.conven);
pull = v.findViewById(R.id.xqy_pull);
pull_1 = v.findViewById(R.id.xqy_pull_1);
imageLoader = ImageLoader.getInstance();
imageLoader.init(ImageLoaderConfiguration.createDefault(getActivity()));
datas = Arrays.asList(imgs);
conven.setPages(new CBViewHolderCreator() {
@Override
public Object createHolder() {
return new Ha();
}
}, datas)
//设置指示器是否可见
.setPointViewVisible(true)
//设置自动切换(同时设置了切换时间间隔)
.startTurning(2000)
//设置两个点图片作为翻页指示器,不设置则没有指示器,可以根据自己需求自行配合自己的指示器,不需要圆点指示器可用不设
.setPageIndicator(new int[]{R.drawable.ic_page_indicator, R.drawable.ic_page_indicator_focused})
//设置指示器的方向(左、中、右)
.setPageIndicatorAlign(ConvenientBanner.PageIndicatorAlign.CENTER_HORIZONTAL)
//设置点击事件
.setOnItemClickListener(this)
//默认是TRUE
.setManualPageable(true);
getdata();
pull.setRefreshListener(new BaseRefreshListener() {
@Override
public void refresh() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
path = "http://api.tianapi.com/apple/?key=51f42ae57be18f5f5d7b402ef0bc64aa&num=" + (shu++);
getdata();
myad.notifyDataSetChanged();
pull.finishRefresh();
}
}, 3000);
}
@Override
public void loadMore() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
path = "http://api.tianapi.com/apple/?key=51f42ae57be18f5f5d7b402ef0bc64aa&num=" + (shu++);
getdata();
myad.notifyDataSetChanged();
pull.finishLoadMore();
}
}, 3000);
}
});
pull_1.setRefreshListener(new BaseRefreshListener() {
@Override
public void refresh() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
path = "http://api.tianapi.com/apple/?key=51f42ae57be18f5f5d7b402ef0bc64aa&num=" + (shu++);
getdata();
myad1.notifyDataSetChanged();
pull_1.finishRefresh();
}
}, 3000);
}
@Override
public void loadMore() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
path = "http://api.tianapi.com/apple/?key=51f42ae57be18f5f5d7b402ef0bc64aa&num=" + (shu++);
getdata();
myad1.notifyDataSetChanged();
pull_1.finishLoadMore();
}
}, 3000);
}
});
return v;
}
class Myad extends BaseAdapter {
private final int lin = 0;
private final int one = 1;
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
View v = View.inflate(getActivity(), R.layout.item1, null);
ImageView img = v.findViewById(R.id.item_img);
TextView item_text = v.findViewById(R.id.item_text);
item_text.setText(list.get(i).getTitle());
ImageLoader.getInstance().displayImage(list.get(i).getPicUrl(), img);
return v;
}
}
class Myad1 extends BaseAdapter {
private final int lin = 0;
private final int one = 1;
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
View v = View.inflate(getActivity(), R.layout.item2, null);
ImageView img = v.findViewById(R.id.item2img);
TextView item_text = v.findViewById(R.id.item2text);
item_text.setText(list.get(i).getTitle());
ImageLoader.getInstance().displayImage(list.get(i).getPicUrl(), img);
return v;
}
}
private void getdata() {
new Thread() {
@Override
public void run() {
if (path == null) {
path = "http://api.tianapi.com/apple/?key=51f42ae57be18f5f5d7b402ef0bc64aa&num=" + shu;
}
try {
URL url = new URL(path);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setReadTimeout(5000);
connection.setConnectTimeout(5000);
if (connection.getResponseCode() == 200) {
InputStream stream = connection.getInputStream();
String json = zhuan(stream, "utf-8");
Log.i("aaa", json);
Gson gson = new Gson();
JsonBean fromJson = gson.fromJson(json, JsonBean.class);
Log.i("aaa", "aaaaaa");
Message message = Message.obtain();
message.what = 0;
message.obj = fromJson;
handler.sendMessage(message);
}
} catch (Exception e) {
e.printStackTrace();
}
super.run();
}
}.start();
}
private String zhuan(InputStream stream, String s) {
try {
InputStreamReader inputStreamReader = new InputStreamReader(stream, s);
BufferedReader reader = new BufferedReader(inputStreamReader);
String ss = null;
StringBuilder builder = new StringBuilder();
while ((ss = reader.readLine()) != null) {
builder.append(ss);
}
inputStreamReader.close();
return builder.toString();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
public void onItemClick(int position) {
}
private class Ha implements Holder<String> {
private ImageView imageView;
@Override
public View createView(Context context) {
imageView = new ImageView(context);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
return imageView;
}
@Override
public void UpdateUI(Context context, int position, String data) {
ImageLoader.getInstance().displayImage(data, imageView);
}
}
}
详情页布局
<?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">
<com.bigkoo.convenientbanner.ConvenientBanner
android:id="@+id/conven"
android:layout_width="match_parent"
android:layout_height="100dp"></com.bigkoo.convenientbanner.ConvenientBanner>
<com.jwenfeng.library.pulltorefresh.PullToRefreshLayout
android:id="@+id/xqy_pull"
android:layout_width="match_parent"
android:layout_height="150dp">
<GridView
android:id="@+id/xqy_gv"
android:layout_width="match_parent"
android:layout_height="150dp"
android:numColumns="4"></GridView>
</com.jwenfeng.library.pulltorefresh.PullToRefreshLayout>
<com.jwenfeng.library.pulltorefresh.PullToRefreshLayout
android:id="@+id/xqy_pull_1"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/xqy_lv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/xqy_gv"></ListView>
</com.jwenfeng.library.pulltorefresh.PullToRefreshLayout>
</LinearLayout>
Fragment + 网络请求 + 适配器
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.util.Log;
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.jwenfeng.library.pulltorefresh.BaseRefreshListener;
import com.jwenfeng.library.pulltorefresh.PullToRefreshLayout;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
public class Fragments extends Fragment {
PullToRefreshLayout pull;
ListView pull_lv;
private String s;
private int shu = 10;
private String path;
List<JsonBean.NewslistBean> list;
MyAdapter myAdapter;
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == 0) {
JsonBean bean = (JsonBean) msg.obj;
list = bean.getNewslist();
Log.i("aaa",list.toString());
myAdapter = new MyAdapter();
pull_lv.setAdapter(myAdapter);
}
}
};
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = View.inflate(getActivity(), R.layout.fragments, null);
pull = v.findViewById(R.id.pull);
pull_lv = v.findViewById(R.id.pull_lv);
Bundle bundle = getArguments();
s = bundle.getString("name", "social");
getdata(s);
pull.setRefreshListener(new BaseRefreshListener() {
@Override
public void refresh() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
shu++;
path = "http://api.tianapi.com/" + s + "/?key=51f42ae57be18f5f5d7b402ef0bc64aa&num=" + shu;
getdata(s);
myAdapter.notifyDataSetChanged();
pull.finishRefresh();
}
}, 3000);
}
@Override
public void loadMore() {
handler.postDelayed(new Runnable() {
@Override
public void run() {
shu++;
path = "http://api.tianapi.com/" + s + "/?key=51f42ae57be18f5f5d7b402ef0bc64aa&num=" + shu;
getdata(s);
myAdapter.notifyDataSetChanged();
pull.finishLoadMore();
}
}, 3000);
}
});
return v;
}
private void getdata(final String s) {
new Thread() {
@Override
public void run() {
path = "http://api.tianapi.com/" + s + "/?key=51f42ae57be18f5f5d7b402ef0bc64aa&num=" + shu;
try {
URL url = new URL(path);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setReadTimeout(5000);
connection.setConnectTimeout(5000);
if (connection.getResponseCode() == 200) {
InputStream stream = connection.getInputStream();
String json = zhuan(stream, "utf-8");
Log.i("aaa",json);
Gson gson = new Gson();
JsonBean fromJson = gson.fromJson(json, JsonBean.class);
Message message = Message.obtain();
message.what = 0;
message.obj = fromJson;
handler.sendMessage(message);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
private String zhuan(InputStream stream, String s) {
try {
InputStreamReader inputStreamReader = new InputStreamReader(stream, s);
BufferedReader reader = new BufferedReader(inputStreamReader);
String ss = null;
StringBuilder builder = new StringBuilder();
while ((ss = reader.readLine()) != null) {
builder.append(ss);
}
inputStreamReader.close();
return builder.toString();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
class MyAdapter extends BaseAdapter {
private final int lin = 0;
private final int one = 1;
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
int type = getItemViewType(i);
Diyi diyi;
Dier dier;
switch (type) {
case lin:
if (view == null) {
view = View.inflate(getActivity(), R.layout.diyi, null);
diyi = new Diyi();
diyi.yiimg1 = view.findViewById(R.id.yiimg);
diyi.yitext = view.findViewById(R.id.yitext);
view.setTag(diyi);
}
break;
case one:
if (view == null) {
view = View.inflate(getActivity(), R.layout.dier, null);
dier = new Dier();
dier.erimg1 = view.findViewById(R.id.erimg1);
dier.erimg2 = view.findViewById(R.id.erimg2);
dier.erimg3 = view.findViewById(R.id.erimg3);
view.setTag(dier);
}
break;
default:
break;
}
switch (type) {
case lin:
diyi = (Diyi) view.getTag();
diyi.yitext.setText(list.get(i).getTitle());
ImageLoader.getInstance().displayImage(list.get(i).getPicUrl(), diyi.yiimg1);
break;
case one:
dier = (Dier) view.getTag();
ImageLoader.getInstance().displayImage(list.get(i).getPicUrl(), dier.erimg1);
ImageLoader.getInstance().displayImage(list.get(i).getPicUrl(), dier.erimg2);
ImageLoader.getInstance().displayImage(list.get(i).getPicUrl(), dier.erimg3);
break;
default:
break;
}
return view;
}
@Override
public int getItemViewType(int position) {
int i = position % 2;
if (i == 0) {
return 0;
} else {
return 1;
}
}
@Override
public int getViewTypeCount() {
return 2;
}
class Diyi {
ImageView yiimg1;
TextView yitext;
}
class Dier {
ImageView erimg1, erimg2, erimg3;
}
}
}