mainactivity.xml:代码
<?xml version="1.0" encoding="utf-8"?><android.support.v4.widget.DrawerLayout 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:id="@+id/drawer"
android:layout_height=“match_parent”
tools:context=".MainActivity">
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width=“match_parent”
android:layout_height=“0dp”
android:layout_weight=“2”/>
<LinearLayout
android:id="@+id/left"
android:layout_width="240dp"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_gravity="left"
android:gravity="center_horizontal"
android:layout_marginBottom="20dp"
android:background="@mipmap/aa">
<ListView
android:id="@+id/listv"
android:layout_gravity="center"
android:layout_marginTop="30dp"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
</android.support.v4.widget.DrawerLayout>
mainactivity.java代码:
package com.gy.app;
import android.support.annotation.NonNull;
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.support.v4.widget.DrawerLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.RadioGroup;
import com.gy.app.adapter.MAdapter;
import com.gy.app.bean.Gybean;
import com.gy.app.frament.Frage1;
import com.gy.app.frament.Frage2;
import com.gy.app.frament.Frage3;
import java.util.ArrayList;
public class MainActivity extends FragmentActivity {
private ViewPager pager;
private RadioGroup radio;
private ListView listv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
public void init(){
//控件
pager = findViewById(R.id.pager);
radio = findViewById(R.id.radiogroup);
listv = findViewById(R.id.listv);
final ArrayList<Fragment> list = new ArrayList<>();
list.add(new Frage1());
list.add(new Frage2());
list.add(new Frage3());
radio.check(radio.getChildAt(0).getId());
pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i1) {
}
@Override
public void onPageSelected(int i) {
radio.check(radio.getChildAt(i).getId());
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
pager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int i) {
return list.get(i);
}
@Override
public int getCount() {
return list.size();
}
});
radio.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId){
case R.id.radioButton1:
pager.setCurrentItem(0);
break;
case R.id.radioButton2:
pager.setCurrentItem(1);
break;
case R.id.radioButton3:
pager.setCurrentItem(2);
break;
}
}
});
final DrawerLayout drawer = findViewById(R.id.drawer);
ListView listv = findViewById(R.id.listv);
final ArrayList<Gybean> list1 = new ArrayList<>();
list1.add(new Gybean("首页"));
list1.add(new Gybean("小视频"));
list1.add(new Gybean("我的"));
drawer.addDrawerListener(new DrawerLayout.DrawerListener() {
@Override
public void onDrawerSlide(@NonNull View view, float v) {
}
@Override
public void onDrawerOpened(@NonNull View view) {
}
@Override
public void onDrawerClosed(@NonNull View view) {
}
@Override
public void onDrawerStateChanged(int i) {
}
});
listv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (list1.get(position).getName().equals("首页")){
pager.setCurrentItem(0);
//关闭侧滑
drawer.closeDrawers();
}
if (list1.get(position).getName().equals("小视频")){
pager.setCurrentItem(1);
//关闭侧滑
drawer.closeDrawers();
}
if (list1.get(position).getName().equals("我的")){
pager.setCurrentItem(2);
//关闭侧滑
drawer.closeDrawers();
}
}
});
MAdapter mAdapter = new MAdapter(MainActivity.this, list1);
listv.setAdapter(mAdapter);
}
}
frage1.xml代码:
<?xml version="1.0" encoding="utf-8"?>
<com.gy.app.xListView.XListView
android:id="@+id/listview"
android:layout_width=“match_parent”
android:layout_height=“wrap_content” />
frage1.java代码:
package com.gy.app.frament;
import android.annotation.SuppressLint;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.widget.DrawerLayout;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import com.google.gson.Gson;
import com.gy.app.MainActivity;
import com.gy.app.R;
import com.gy.app.adapter.MAdapter;
import com.gy.app.adapter.MyAdapter;
import com.gy.app.bean.Gybean;
import com.gy.app.bean.LgyBean;
import com.gy.app.xListView.XListView;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class Frage1 extends Fragment implements XListView.IXListViewListener {
Context context;
private View view;
public String messages;
private XListView listView;
private MyAdapter myAdapter;
int page=1;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view = inflater.inflate(R.layout.frage1,container,false);
init();
getdata();
return view;
}
public void getdata(){
new MyAsynctask().execute();
}
public void init(){
listView = view.findViewById(R.id.listview);
listView.setXListViewListener(this);
listView.setPullLoadEnable(true);
listView.setPullRefreshEnable(true);
}
//下拉刷新
@Override
public void onRefresh() {
page=1;
new Runnable(){
@Override
public void run() {
getdata();
myAdapter.notifyDataSetChanged();
}
}.run();
onLoad();
}
//上拉加载
@Override
public void onLoadMore() {
page+=1;
new Runnable(){
@Override
public void run() {
getdata();
myAdapter.notifyDataSetChanged();
}
}.run();
onLoad();
}
//关闭刷新加载
public void onLoad() {
listView.stopLoadMore();
listView.stopRefresh();
listView.setRefreshTime(time());
}
//获取当前时间
public String time() {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
Date date = new Date(System.currentTimeMillis());
return dateFormat.format(date);
}
class MyAsynctask extends AsyncTask<Integer,Integer,String>{
//子线程耗时操作
@Override
protected String doInBackground(Integer... integers) {
try {
String url="http://www.xieast.com/api/news/news.php?page="+page+"";
URL url1 = new URL(url);
HttpURLConnection connection = (HttpURLConnection) url1.openConnection();
//设置请求
connection.setRequestMethod("GET");
connection.setConnectTimeout(5*1000);
connection.setReadTimeout(5*1000);
connection.connect();
//输入流
if (connection.getResponseCode()==200){
InputStream inputStream = connection.getInputStream();
byte[] data=new byte[1024*521];
int a=0;
ByteArrayOutputStream sb = new ByteArrayOutputStream();
while ((a=inputStream.read(data))>-1){
sb.write(data,0,a);
}
messages=sb.toString();
inputStream.close();
connection.disconnect();
}
} catch (Exception e) {
e.printStackTrace();
}
return messages;
}
//完成后执行
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
if (s != null) {
//解析
Gson gson = new Gson();
LgyBean bean = gson.fromJson(s, LgyBean.class);
List<LgyBean.DataBean> list = bean.getData();
if (list != null) {
myAdapter = new MyAdapter(getContext(), (ArrayList<LgyBean.DataBean>) list);
listView.setAdapter(myAdapter);
}
}
}
}
}
MyAdapter适配器代码:
package com.gy.app.adapter;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.gy.app.MainActivity;
import com.gy.app.R;
import com.gy.app.bean.LgyBean;
import com.nostra13.universalimageloader.core.ImageLoader;
import java.util.ArrayList;
public class MyAdapter extends BaseAdapter {
Context context;
ArrayList<LgyBean.DataBean> list;
private TextView t1;
private ImageView img1;
private TextView t2;
private ImageView img2;
private ImageView img3;
private ImageView img4;
public MyAdapter(Context context,ArrayList<LgyBean.DataBean> list) {
this.context = context;
this.list=list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder=null;
if (convertView==null){
holder=new ViewHolder();
int type = getItemViewType(position);
switch (type){
case 0:
convertView=View.inflate(context, R.layout.iteam1,null);
t1 = holder.tee1 = convertView.findViewById(R.id.t1);
img1 = holder.imgee1 = convertView.findViewById(R.id.img1);
t1.setText(list.get(position).getAuthor_name());
ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s02(),holder.imgee1);
break;
case 1:
convertView=View.inflate(context, R.layout.iteam2,null);
t2 = holder.tee1 = convertView.findViewById(R.id.t2);
img2 = holder.imgee2 = convertView.findViewById(R.id.img2);
img3 = holder.imgee3 = convertView.findViewById(R.id.img3);
img4 = holder.imgee4 = convertView.findViewById(R.id.img4);
ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s(),holder.imgee2);
ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s02(),holder.imgee3);
ImageLoader.getInstance().displayImage(list.get(position).getThumbnail_pic_s03(),holder.imgee4);
t2.setText(list.get(position).getTitle());
break;
}
convertView.setTag(holder);
}else{
holder= (ViewHolder) convertView.getTag();
}
return convertView;
}
//返回条目类型的数量
@Override
public int getViewTypeCount() {
return 2;
}
//返回条目的类型
@Override
public int getItemViewType(int position) {
return position%2;
}
class ViewHolder{
TextView tee1,tee2;
ImageView imgee1,imgee2,imgee3,imgee4;
}
}
mapp.java代码;
package com.gy.app.app;
import android.app.Application;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.os.Build;
import android.support.annotation.RequiresApi;
import android.util.Log;
import com.gy.app.R;
import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache;
import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import com.nostra13.universalimageloader.core.display.CircleBitmapDisplayer;
import java.io.File;
public class Myapp extends Application {
@Override
public void onCreate() {
super.onCreate();
String s = getFilesDir().getPath() + “/lgy”;
File file = new File(s);
Log.i(“m”,“ss:”+s);
//实例化ImageLoaderConfiguration
ImageLoaderConfiguration build = new ImageLoaderConfiguration.Builder(this)
.memoryCacheExtraOptions(480, 800) // default = device screen dimensions 内存缓存文件的最大长宽
.diskCacheExtraOptions(480, 800, null) // 本地缓存的详细信息(缓存的最大长宽),最好不要设置这个
.threadPoolSize(3) // default 线程池内加载的数量
.threadPriority(Thread.NORM_PRIORITY - 2) // default 设置当前线程的优先级
.tasksProcessingOrder(QueueProcessingType.FIFO) // default
.denyCacheImageMultipleSizesInMemory()
.memoryCache(new LruMemoryCache(2 * 1024 * 1024)) //可以通过自己的内存缓存实现
.memoryCacheSize(2 * 1024 * 1024) // 内存缓存的最大值
.memoryCacheSizePercentage(13) // default
.diskCache(new UnlimitedDiskCache(file)) // default 可以自定义缓存路径
.diskCacheSize(50 * 1024 * 1024) // 50 Mb sd卡(本地)缓存的最大值
.defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default
.defaultDisplayImageOptions(options())
.build();
ImageLoader.getInstance().init(build);
}
public DisplayImageOptions options(){
return new DisplayImageOptions.Builder()
.showImageForEmptyUri(R.mipmap.ic_launcher)
.showImageOnFail(R.mipmap.ic_launcher)
.cacheInMemory(true) //启用内存缓存
.cacheOnDisk(true) //启用外存缓存
.considerExifParams(true) .bitmapConfig(Bitmap.Config.ARGB_8888) //设置图片的解码类型
.displayer(new CircleBitmapDisplayer(Color.RED,1))//设置为圆形
.build();
}
}
判断网络代码:
package com.gy.app.netutils;
import android.annotation.SuppressLint;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
public class NetWokUtils {
Context context;
public NetWokUtils(Context context) {
this.context = context;
}
@SuppressLint("MissingPermission")
public boolean utlis(){
//网络管理者
ConnectivityManager manager= (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
//网络类型
NetworkInfo networkInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
return networkInfo.isConnected();
}
}
别忘了权限和注册
完事了。。。