DrawLayout+ImageLoader+XListView+TabLayout

在这里插入图片描述
在这里插入图片描述
注意 导依赖
在这里插入图片描述
权限
在这里插入图片描述


功能一 和功能二 同类题在此功能一不予展示

Mainactivity 侧拉 各功能切换

import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.example.week2_moni.fragment.AFragment;
import com.example.week2_moni.fragment.BFragment;
import com.example.week2_moni.fragment.CFragment;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private CFragment cFragment;
    private AFragment aFragment;
    private BFragment bFragment;
    private TextView xListView;
    private TextView Tab_Layout;
    private LinearLayout Zuo_Layout;
    private DrawerLayout Drawer_Layout;
    private FragmentManager manager;
    private TextView Refresh_list;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initData();
        initView();
    }

    private void initData() {
        aFragment = new AFragment();
        bFragment = new BFragment();
        cFragment = new CFragment();
    }

    private void initView() {
        xListView = findViewById(R.id.xListView);
        xListView.setOnClickListener(this);
        Tab_Layout = findViewById(R.id.Tab_Layout);
        Tab_Layout.setOnClickListener(this);
        Refresh_list = findViewById(R.id.Refresh_list);
        Refresh_list.setOnClickListener(this);
        Zuo_Layout = findViewById(R.id.Zuo_Layout);
        Drawer_Layout = findViewById(R.id.Drawer_Layout);
        manager = getSupportFragmentManager();
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.xListView:
                manager.beginTransaction().replace(R.id.FrameLayout, aFragment).commit();
                Drawer_Layout.closeDrawers();
                break;
            case R.id.Tab_Layout:
                manager.beginTransaction().replace(R.id.FrameLayout, bFragment).commit();
                Drawer_Layout.closeDrawers();
                break;
            case R.id.Refresh_list:
                manager.beginTransaction().replace(R.id.FrameLayout, cFragment).commit();
                Drawer_Layout.closeDrawers();
                break;
        }
    }
}

主页面布局

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/Drawer_Layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <!--整个屏幕展示-->
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/FrameLayout"/>
</RelativeLayout>
    <!--侧拉菜单-->
 <LinearLayout
     android:layout_width="200dp"
     android:layout_height="match_parent"
     android:id="@+id/Zuo_Layout"
     android:orientation="vertical"
     android:layout_gravity="start"
     android:background="@color/colorPrimary"
     >
     <ImageView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:src="@mipmap/ic_launcher_round"
         android:layout_gravity="center_horizontal"/>
     <TextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_gravity="center_horizontal"
         android:id="@+id/Refresh_list"
         android:layout_marginTop="20dp"
         android:text="上拉下拉"
         />
     <TextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_gravity="center_horizontal"
         android:id="@+id/xListView"
         android:text="xListView多布局"
         android:layout_marginTop="20dp"/>
     <TextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginTop="20dp"
         android:layout_gravity="center_horizontal"
         android:id="@+id/Tab_Layout"
         android:text="TabLayout"
         />
 </LinearLayout>
 </android.support.v4.widget.DrawerLayout>

Fragment 功能二 多布局+Refresh+LoadMore

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.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.example.week2_moni.R;
import com.example.week2_moni.adapter.MyAdapter;
import com.example.week2_moni.bean.MyData;
import com.example.week2_moni.utils.HttpUtils;
import com.example.xlistviewflush.view.XListView;
import com.google.gson.Gson;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class AFragment extends Fragment implements XListView.IXListViewListener {
    private String mUrl = "http://www.xieast.com/api/news/news.php?page=";
    private ArrayList<MyData.DataBean> data = new ArrayList<>();
    private XListView X_ListView;
    private MyAdapter mAdapter;
    private int i = 1;

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment_a, null);
        initView(v);
        mAdapter = new MyAdapter(data, getActivity().getApplicationContext());
        X_ListView.setAdapter(mAdapter);
        new MyTask().execute(mUrl + i);
        return v;
    }

    private void initView(View v) {
        X_ListView = v.findViewById(R.id.X_ListView);
        X_ListView.setPullLoadEnable(true);
        X_ListView.setXListViewListener(this);
    }

    @Override
    public void onRefresh() {
        data.clear();
        new MyTask().execute(mUrl + 1);
    }

    @Override
    public void onLoadMore() {
        new MyTask().execute(mUrl + (++i));
    }

    class MyTask extends AsyncTask<String, Void, List<MyData.DataBean>> {

        @Override
        protected List<MyData.DataBean> doInBackground(String... strings) {
            try {
                String str = HttpUtils.get(strings[0]);
                Gson gson = new Gson();
                MyData myData = gson.fromJson(str, MyData.class);
                return myData.getData();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
 @Override
        protected void onPostExecute(List<MyData.DataBean> dataBeans) {
            super.onPostExecute(dataBeans);
            data.addAll(dataBeans);
            mAdapter.notifyDataSetChanged();
            close();
        }
    }

    private void close() {
        X_ListView.stopLoadMore();
        X_ListView.stopRefresh();
        //显示上一次的刷新日期
        Date date = new Date();
        String dateStr = (String) android.text.format.DateFormat.format("EEEE, MMMM dd日, yyyy kk:mm:ss", date);
        X_ListView.setRefreshTime(dateStr);

    }
}

多布局适配器

package com.example.week2_moni.adapter;

import android.content.Context;
import android.graphics.Bitmap;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.example.week2_moni.R;
import com.example.week2_moni.bean.MyData;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.display.CircleBitmapDisplayer;
import java.util.ArrayList;
public class MyAdapter extends BaseAdapter {
    private final int ITEM_ONE = 0;
    private final int ITEM_TWO = 1;
    private ArrayList<MyData.DataBean> mList;
    private Context mContext;
    private ImageLoader mImageLoader = ImageLoader.getInstance();
    private DisplayImageOptions mDisImageOp;

    public MyAdapter(ArrayList<MyData.DataBean> mList, Context mContext) {
        this.mList = mList;
        this.mContext = mContext;
        mDisImageOp = new DisplayImageOptions.Builder()
                .showStubImage(R.drawable.ic_launcher)
                .showImageForEmptyUri(R.mipmap.ic_launcher)
                .showImageOnFail(R.drawable.ic_launcher)
                .cacheInMemory(true)
                .cacheOnDisc(true)
                .bitmapConfig(Bitmap.Config.ARGB_8888)   //设置图片的解码类型
                .displayer(new CircleBitmapDisplayer())//加载圆角图片
                .build();
    }


    @Override
    public int getCount() {
        return mList.size();
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        HolderOne one = null;
        HolderTwo two = null;
        int type = getItemViewType(position);
        MyData.DataBean dataBean = mList.get(position);
        switch (type) {
            case ITEM_ONE:
                if (convertView == null) {
                    one = new HolderOne();
                    convertView = View.inflate(mContext, R.layout.item_one, null);
                    one.mNameOne = convertView.findViewById(R.id.Item_One_Text);
                    one.mImageOne = convertView.findViewById(R.id.Item_One_Image);
                    convertView.setTag(one);
                } else {
                    one = (HolderOne) convertView.getTag();
                }
                one.mNameOne.setText(dataBean.getTitle() + "");
                mImageLoader.displayImage(dataBean.getThumbnail_pic_s(), one.mImageOne, mDisImageOp);

                break;
            case ITEM_TWO:
                if (convertView == null) {
                    two = new HolderTwo();
                    convertView = View.inflate(mContext, R.layout.item_two, null);
                    two.mNameTwo = convertView.findViewById(R.id.Item_Two_Text);
                    two.mImageTwo = convertView.findViewById(R.id.Item_Two_Image);
                    convertView.setTag(two);
                } else {
                    two = (HolderTwo) convertView.getTag();
                }
                two.mNameTwo.setText(dataBean.getTitle() + "");
                mImageLoader.displayImage(dataBean.getThumbnail_pic_s(), two.mImageTwo, mDisImageOp);
                break;
        }

        return convertView;
    }

    //返回条目的类型
    @Override
    public int getItemViewType(int position) {
        //比如正常的接口一般都是有字段判断的  data.getType =1
        if (position % 2 == 0) {
            return ITEM_ONE;
        } else {
            return ITEM_TWO;
        }
    }

    @Override
    public int getViewTypeCount() {
        return 2;
    }

    class HolderOne {
        private TextView mNameOne;
        private ImageView mImageOne;
    }

    class HolderTwo {
        private TextView mNameTwo;
        private ImageView mImageTwo;
    }
}

ImageLoader圆角 必写的类
注意需要注册在这里插入图片描述

import android.app.Application;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;

/**
 * 你只要写了Application必须要注册如果不注册就会报错
 */
public class MyApp extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        ImageLoaderConfiguration imageLoaderConfiguration = ImageLoaderConfiguration.createDefault(this);
        ImageLoader.getInstance().init(imageLoaderConfiguration);
    }
}

bean包

package com.example.week2_moni.bean;

import java.util.List;

public class MyData {

    private String msg;
    private int code;
    private List<DataBean> data;

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public List<DataBean> getData() {
        return data;
    }

    public void setData(List<DataBean> data) {
        this.data = data;
    }

    public static class DataBean {

        private String uniquekey;
        private String title;
        private String date;
        private String category;
        private String author_name;
        private String url;
        private String thumbnail_pic_s;
        private String thumbnail_pic_s02;
        private String thumbnail_pic_s03;

        public String getUniquekey() {
            return uniquekey;
        }

        public void setUniquekey(String uniquekey) {
            this.uniquekey = uniquekey;
        }

        public String getTitle() {
            return title;
        }

        public void setTitle(String title) {
            this.title = title;
        }

        public String getDate() {
            return date;
        }

        public void setDate(String date) {
            this.date = date;
        }

        public String getCategory() {
            return category;
        }

        public void setCategory(String category) {
            this.category = category;
        }

        public String getAuthor_name() {
            return author_name;
        }

        public void setAuthor_name(String author_name) {
            this.author_name = author_name;
        }

        public String getUrl() {
            return url;
        }

        public void setUrl(String url) {
            this.url = url;
        }

        public String getThumbnail_pic_s() {
            return thumbnail_pic_s;
        }

        public void setThumbnail_pic_s(String thumbnail_pic_s) {
            this.thumbnail_pic_s = thumbnail_pic_s;
        }

        public String getThumbnail_pic_s02() {
            return thumbnail_pic_s02;
        }

        public void setThumbnail_pic_s02(String thumbnail_pic_s02) {
            this.thumbnail_pic_s02 = thumbnail_pic_s02;
        }

        public String getThumbnail_pic_s03() {
            return thumbnail_pic_s03;
        }

        public void setThumbnail_pic_s03(String thumbnail_pic_s03) {
            this.thumbnail_pic_s03 = thumbnail_pic_s03;
        }
    }
}

工具类

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class HttpUtils {

    public static String get(String urlStr) throws Exception {
        URL url = new URL(urlStr);
        //由一个有效的网址服务返回这个对象
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        //设置请求方式
        connection.setRequestMethod("GET");
        connection.setConnectTimeout(5000);
        InputStream stream = connection.getInputStream();
        String inputStr = getInputStr(stream);
        return inputStr;
    }
  //把流转成字符串
    private static String getInputStr(InputStream stream) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(stream));
        StringBuffer sb = new StringBuffer();
        String str = null;
        while ((str = br.readLine()) != null) {
            sb.append(str);
        }
        return sb.toString();
    }
}

功能二布局

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <com.example.xlistviewflush.view.XListView
        android:layout_width="match_parent"
        android:id="@+id/X_ListView"
        android:layout_height="wrap_content"></com.example.xlistviewflush.view.XListView>
</android.support.constraint.ConstraintLayout>

功能三 fragment +tablayout 此功能引用功能二

package com.example.week2_moni.fragment;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.example.week2_moni.R;
import com.example.week2_moni.pageradapter.MyPagerAdapter;

import java.util.ArrayList;

public class BFragment extends Fragment {
    private TabLayout Frag_tab;
    private ViewPager Frag_Pager;
    private ArrayList<Fragment> mList=new ArrayList<>();
    private ArrayList<String> mTitle=new ArrayList<>();
    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment_b, null);
        initData();
        initView(v);
        return v;
    }

    private void initData() {
        mList.add(new AFragment());
        mList.add(new AFragment());
        mTitle.add("首页");
        mTitle.add("新闻");
    }

    private void initView(View v) {
        Frag_tab = (TabLayout) v.findViewById(R.id.Frag_tab);
        Frag_Pager = (ViewPager) v.findViewById(R.id.Frag_Pager);
        Frag_Pager.setAdapter(new MyPagerAdapter(getChildFragmentManager(),mList,mTitle));
        Frag_tab.setupWithViewPager(Frag_Pager);
    }
}

对应适配器

import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

import java.util.ArrayList;

public class MyPagerAdapter extends FragmentPagerAdapter {

    private ArrayList<Fragment> mList;
    private ArrayList<String> mTitle;

    public MyPagerAdapter(FragmentManager fm, ArrayList<Fragment> list, ArrayList<String> title) {
        super(fm);
        this.mList = list;
        this.mTitle = title;
    }

    @Override
    public Fragment getItem(int i) {
        return mList.get(i);
    }

    @Override
    public int getCount() {
        return mList.size();
    }

    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        return mTitle.get(position);
    }
}

功能三布局

<?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.design.widget.TabLayout
      android:id="@+id/Frag_tab"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"></android.support.design.widget.TabLayout>

  <android.support.v4.view.ViewPager
      android:id="@+id/Frag_Pager"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:layout_below="@+id/Frag_tab"></android.support.v4.view.ViewPager>

</LinearLayout>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值