week02.1

public class BaseApplication extends Application {

    private DiskCache diskCache;
    private File file;

    @Override
    public void onCreate() {
        super.onCreate();

        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
            File rootSD = Environment.getExternalStorageDirectory();
            file = new File(rootSD, "pic");
            if (!file.exists()) {
                file.mkdirs();
            }
        }

        try {
            diskCache = new LruDiskCache(file, new Md5FileNameGenerator(), 50 * 1024 * 1024);
        } catch (IOException e) {
            e.printStackTrace();
        }

        BitmapDisplayer displayer = new RoundedBitmapDisplayer(10);

        DisplayImageOptions options = new DisplayImageOptions.Builder()
                .cacheOnDisk(true)
                .cacheInMemory(true)
                .bitmapConfig(Bitmap.Config.RGB_565)
                .displayer(displayer)
                .showImageOnFail(R.mipmap.ic_launcher)
                .showImageOnLoading(R.mipmap.ic_launcher)
                .showImageForEmptyUri(R.mipmap.ic_launcher)
                .build();

        ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this)
                .diskCache(diskCache)
                .memoryCache(new LruMemoryCache(12 * 1024 * 1024))
                .threadPoolSize(3)
                .defaultDisplayImageOptions(options)
                .build();

        ImageLoader.getInstance().init(configuration);
    }
}

public class HomeFragment extends Fragment {

    private String url = "http://www.xieast.com/api/news/news.php?page=";
    private int currentPage = 1;
    private XListView xlvNews;
    private NewsAdapter newsAdapter;
    private List<News.DataBean> list;
    private Handler handler = new Handler();

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

    @SuppressLint("StaticFieldLeak")
    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        list = new ArrayList<>();
        newsAdapter = new NewsAdapter(getActivity(), list);
        xlvNews.setAdapter(newsAdapter);

        xlvNews.setPullLoadEnable(true);
        xlvNews.setPullRefreshEnable(true);

        getData(1, false);

        xlvNews.setXListViewListener(new XListView.IXListViewListener() {
            @Override
            public void onRefresh() {
                currentPage = 1;
                getData(currentPage, false);
            }

            @Override
            public void onLoadMore() {
                currentPage++;
                getData(currentPage, true);
            }
        });
    }

    @SuppressLint("StaticFieldLeak")
    private void getData(int page, final boolean isLoadMore) {
        new AsyncTask<String, Integer, String>() {
            @Override
            protected String doInBackground(String... strings) {
                return HttpUtils.getStringFromHttp(strings[0]);
            }

            @Override
            protected void onPostExecute(String s) {
                super.onPostExecute(s);
                if (!TextUtils.isEmpty(s)) {
                    Gson gson = new Gson();
                    News news = gson.fromJson(s, News.class);
                    if (news != null) {
                        List<News.DataBean> data = news.getData();
                        if (data != null) {
                            if (!isLoadMore) {
                                list.clear();
                            }
                            list.addAll(data);
                            newsAdapter.notifyDataSetChanged();
                        }
                    }

                    handler.postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            if (isLoadMore) {
                                xlvNews.stopLoadMore();
                            } else {
                                xlvNews.stopRefresh();
                                xlvNews.setRefreshTime("刚刚");
                            }
                        }
                    }, 2000);
                }
            }
        }.execute(url + currentPage);
    }

    private void initView(View view) {
        xlvNews = view.findViewById(R.id.xlv_news);
    }
}

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private ViewPager vpHome;
    private TextView txtHome;
    private TextView txtWeather;
    private TextView txtMine;
    private HomeFragment homeFragment;
    private WeatherFragment weatherFragment;
    private MineFragment mineFragment;
    private List<Fragment> list;
    private int currentPage = 0;

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

        initData();

        setListener();


    }

    private void setListener() {
        txtHome.setOnClickListener(this);
        txtWeather.setOnClickListener(this);
        txtMine.setOnClickListener(this);
    }

    private void initData() {
        homeFragment = new HomeFragment();
        weatherFragment = new WeatherFragment();
        mineFragment = new MineFragment();

        list = new ArrayList<>();
        list.add(homeFragment);
        list.add(weatherFragment);
        list.add(mineFragment);

        vpHome.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
            @Override
            public Fragment getItem(int position) {
                return list.get(position);
            }

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

        changePager(currentPage);

        vpHome.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                changePager(position);
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
    }


    private void initView() {
        vpHome = findViewById(R.id.vp_home);
        txtHome = findViewById(R.id.txt_home);
        txtWeather = findViewById(R.id.txt_weather);
        txtMine = findViewById(R.id.txt_mine);
    }

    @Override
    public void onClick(View view) {

        switch (view.getId()) {
            case R.id.txt_home:
                currentPage = 0;
                break;
            case R.id.txt_weather:
                currentPage = 1;
                break;
            case R.id.txt_mine:
                currentPage = 2;
                break;
        }
        changePager(currentPage);
    }

    private void changePager(int currentPage) {
        vpHome.setCurrentItem(currentPage);
        txtHome.setBackgroundColor(currentPage == 0 ? Color.GRAY : Color.WHITE);
        txtWeather.setBackgroundColor(currentPage == 1 ? Color.GRAY : Color.WHITE);
        txtMine.setBackgroundColor(currentPage == 2 ? Color.GRAY : Color.WHITE);
    }
}
 

猜你喜欢

转载自blog.csdn.net/qq_41880220/article/details/83053621