activity 包:
LoginActivity
public class LoginActivity extends AppCompatActivity {
TextView textView;
int time = 3;
int temp = 0;
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
time--;
if(time<=0){
startActivity(new Intent(LoginActivity.this,MainActivity.class));
finish();
}else{
textView.setText(time+"S");
handler.sendEmptyMessageDelayed(1,1000);
}
}
};
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
textView = (TextView) findViewById(R.id.ji);
handler.sendEmptyMessageDelayed(1,1000);
}
}
MainActivity
public class MainActivity extends AppCompatActivity {
private DrawerLayout drawerLayout;
private ActionBarDrawerToggle toggle;
private ViewPager contents;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//为空才添加Fragment: 左边菜单s
if(savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.left_drawer,new LeftFragment())
.commit();
}
//初始化View
initView();
//加载数据
initData();
}
private void initData() {
}
private void initView() {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
drawerLayout = findViewById(R.id.drawer);
toggle = new ActionBarDrawerToggle(this,drawerLayout,R.string.open_drawer,R.string.close_drawer);
drawerLayout.addDrawerListener(toggle);
toggle.syncState();
contents = findViewById(R.id.contents);
contents.setAdapter(new MinePageAdapter(getSupportFragmentManager()));
TabLayout tabLayout = findViewById(R.id.bottom);
tabLayout.setupWithViewPager(contents);
}
public void showPage(int i){
contents.setCurrentItem(i);
drawerLayout.closeDrawer(Gravity.START);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(toggle.onOptionsItemSelected(item)) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
adapter 包:
ConAdapter
public class ConAdapter extends BaseAdapter {
private Context mcon;
private List<Bean.DataBean> mjihe;
public ConAdapter(Context con) {
this.mcon = con;
mjihe = new ArrayList<>();
}
public void setMjihe(List <Bean.DataBean> jihe) {
mjihe.clear();
mjihe.addAll(jihe);
notifyDataSetChanged();
}
public void addMjihe(List <Bean.DataBean> jihe) {
mjihe.addAll(jihe);
notifyDataSetChanged();
}
@Override
public int getCount() {
return mjihe.size();
}
@Override
public Bean.DataBean getItem(int position) {
return mjihe.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if(convertView == null){
viewHolder = new ViewHolder();
convertView = LayoutInflater.from(mcon).inflate(R.layout.item,parent,false);
viewHolder.text = convertView.findViewById(R.id.text);
viewHolder.image = convertView.findViewById(R.id.image);
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.text.setText(mjihe.get(position).getNews_title());
DisplayImageOptions options = new DisplayImageOptions.Builder()
.cacheInMemory(true)
.cacheOnDisk(true)
.build();
ImageLoader.getInstance().displayImage(mjihe.get(position).getPic_url(),viewHolder.image,options);
return convertView;
}
class ViewHolder{
TextView text;
ImageView image;
}
}
HomePageAdapter
public class HomePageAdapter extends FragmentPagerAdapter {
private List<ChannelBean> mDatas;
/* private String [] pageNames = new String[] {“推荐”,“文化”,“军事”,“娱乐”};*/
public HomePageAdapter(FragmentManager fm) {
super(fm);
mDatas = new ArrayList<>();
}
public void setmDatas(List<ChannelBean> mDatas) {
this.mDatas = mDatas;
notifyDataSetChanged();
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new Top1Fragment();
default:
return new Top2Fragment();
}
}
@Override
public int getCount() {
return mDatas.size();
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return mDatas.get(position).getName();
}
}
MinePageAdapter
public class MinePageAdapter extends FragmentPagerAdapter {
private String [] meuns = new String[] {"文章","站点","主持"};
public MinePageAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position){
case 0:
return new HomeFragment();
case 1:
return new MineFragment();
case 2:
return new VideoFragment();
default:
return new Fragment();
}
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return meuns[position];
}
@Override
public int getCount() {
return meuns.length;
}
}
LeftMenuAdapter
public class LeftMenuAdapter extends BaseAdapter{
private String [] meuns = new String[] {"文章","站点","主持"};
private Context mContext;
public LeftMenuAdapter(Context mContext) {
this.mContext = mContext;
}
@Override
public int getCount() {
return meuns.length + 1;
}
/* private final int ITEM_COUNT = 2;
private final int IMAGE_TYPE = 0;
private final int TEXT_TYPE = 1;
@Override
public int getViewTypeCount() {
return ITEM_COUNT;
}
@Override
public int getItemViewType(int position) {
return position == 0 ? IMAGE_TYPE : TEXT_TYPE;
}*/
@Override
public String getItem(int position) {
if(position == 0){
return null;
}
return meuns[position -1];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if(convertView == null){
viewHolder = new ViewHolder();
convertView = LayoutInflater.from(mContext).inflate(R.layout.menu_text_item,parent,false);
/* viewHolder = new ViewHolder(convertView);*/
viewHolder.textView = convertView.findViewById(R.id.text);
convertView.setTag(viewHolder);
}else{
viewHolder = (ViewHolder) convertView.getTag();
}
//* viewHolder.bindData(getItem(position));*//*
viewHolder.textView .setText(getItem(position));
return convertView;
}
class ViewHolder {
TextView textView;
/* public ViewHolder(View itemView) {
imageView = itemView.findViewById(R.id.icon);
textView = itemView.findViewById(R.id.text);
itemView.setTag(this);
}*/
/* public void bindData(String item) {
textView.setText(item);
}*/
}
}
dao 包:
Dao
public class Dao {
/* private static Dao instance;*/
private MHelper helper;
private SQLiteDatabase database;
public Dao(Context context) {
helper = new MHelper(context);
database = helper.getReadableDatabase();
}
/* Dao(Context context) {
database = new MHelper(context).getWritableDatabase();
}
public static Dao getInstance(Context context) {
if (instance == null) {
instance = new Dao(context);
}
return instance;
}*/
/* //修改
public void updata(String name) {
ContentValues values = new ContentValues();
values.put(“name”, name);
database.update(“user”, values, “name=?”, new String[]{name});
}*/
//查询
public List<Bean.DataBean> queryData(){
List<Bean.DataBean> list = new ArrayList<>();
Cursor user = database.query("user", null, null, null, null, null, null);
while (user.moveToNext()){
String summary = user.getString(user.getColumnIndex("news_summary"));
String title = user.getString(user.getColumnIndex("news_title"));
String picUrl = user.getString(user.getColumnIndex("pic_url"));
list.add(new Bean.DataBean(title,summary, picUrl));
}
return list;
}
//删除
public void delete(String news_title,String news_summary, String picUrl) {
database.delete("user", "news_title=? and news_summary=? and picUrl=?", new String[]{news_title});
}
//增加
public void add(String news_title,String news_summary, String picUrl){
ContentValues values = new ContentValues();
values.put("news_summary",news_summary);
values.put("news_title",news_title);
values.put("pic_url", picUrl);
database.insert("user",null,values);
}
}
MHelper
public class MHelper extends SQLiteOpenHelper {
public MHelper(@Nullable Context context) {
super(context,"ss.db", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table user(id integer primary key autoincrement,news_summary text,news_title text, pic_url text)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
@Override
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
fragment 包:
HomeFragment
public class HomeFragment extends Fragment {
private TabLayout top;
private ViewPager contents;
private List<ChannelBean> datas;
private HomePageAdapter adapter;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.activity_top,container,false);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
top = view.findViewById(R.id.top);
contents = view.findViewById(R.id.contents);
adapter = new HomePageAdapter(getChildFragmentManager());
contents.setAdapter(adapter);
top.setupWithViewPager(contents);
datas = new ArrayList<>();
//数据库查询频道
datas.add(new ChannelBean("体育", true));
datas.add(new ChannelBean("关注", true));
datas.add(new ChannelBean("推荐", true));
datas.add(new ChannelBean("国际", true));
datas.add(new ChannelBean("热点", true));
datas.add(new ChannelBean("军事", true));
datas.add(new ChannelBean("八卦", true));
datas.add(new ChannelBean("游戏", false));
datas.add(new ChannelBean("宠物", false));
datas.add(new ChannelBean("汽车", false));
datas.add(new ChannelBean("热卖", false));
datas.add(new ChannelBean("外卖", false));
datas.add(new ChannelBean("地图", false));
datas.add(new ChannelBean("视频", false));
datas.add(new ChannelBean("图片", false));
datas.add(new ChannelBean("音乐", false));
datas.add(new ChannelBean("家居", false));
datas.add(new ChannelBean("网路", false));
datas.add(new ChannelBean("购物", false));
datas.add(new ChannelBean("其他", false));
adapter.setmDatas(getSelectedResult(datas));
view.findViewById(R.id.to_cm).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//频道管理页面
//ChannelActivity.startChannelForResult(getActivity(), datas);
Gson gson = new Gson();
String jsonArray = gson.toJson(datas);
Intent intent = new Intent(getActivity(), ChannelActivity.class);
intent.putExtra(RESULT_JSON_KEY, jsonArray);
///
startActivityForResult(intent, REQUEST_CODE);
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE) {
String json = data.getStringExtra("json");
datas = new Gson().fromJson(json, new TypeToken<ArrayList<ChannelBean>>(){}.getType());
adapter.setmDatas(getSelectedResult(datas));
return;
}
super.onActivityResult(requestCode, resultCode, data);
}
private List<ChannelBean> getSelectedResult(List<ChannelBean> datas) {
List<ChannelBean> result = new ArrayList<>();
for (ChannelBean bean:datas) {
if(bean.isSelect()) {
result.add(bean);
}
}
return result;
}
}
LeftFragment
public class LeftFragment extends Fragment {
private ListView menus;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.activity_left,container,false);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
menus = view.findViewById(R.id.menus);
menus.setAdapter(new LeftMenuAdapter(getActivity()));
menus.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView <?> parent, View view, int position, long id) {
//图片 不做跳转
if(position ==0) {
return;
}
//切换页面
((MainActivity)getActivity()).showPage(position-1);
}
});
}
}
MineFragment
public class MineFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
TextView textView = new TextView(getActivity());
textView.setText(getClass().getSimpleName());
return textView;
}
Top1Fragment
public class Top1Fragment extends Fragment {
private Banner banner;
private ArrayList list_path;
private ArrayList list_title;
private XListView xListView;
private PullToRefreshListView ptrListView;
private int mPage ;
private int PAGE_COUNT = 10 ;
private ConAdapter adapter;
private Dao dao;
private ActionBarDrawerToggle mToggle;
private DrawerLayout drawer;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_second,container,false);
ptrListView = view.findViewById(R.id.fresh);
banner = view.findViewById(R.id.banner);
dao = new Dao(getActivity());
/*xListView = view.findViewById(R.id.list);*/
adapter = new ConAdapter(getActivity());
ptrListView.setAdapter(adapter);
/* xListView.setAdapter(adapter);*/
//同时支持刷新 加载
ptrListView.setMode(PullToRefreshBase.Mode.BOTH);
ptrListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
mPage = 1;
initData();
}
@Override
public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
//mPage ++;//2 2
initData();
}
});
mPage = 1;
initData();
initdata();
return view;
}
private String path ="http://api.expoon.com/AppNews/getNewsList/type/1/p/?d";
private void initData() {
NetUtil.getInstance().getRequest(String.format(path, mPage), Bean.class, new NetUtil.Callback<Bean>() {
@Override
public List <Bean.DataBean> onSuccess(Bean bean) {
/* Dao.getInstance(getActivity()).add(bean.getData().get(0));*/
List<Bean.DataBean> data = bean.getData();
for (int i = 0 ; i<data.size(); i++){
String news_summary = data.get(i).getNews_summary();
String news_title = data.get(i).getNews_title();
String pic_url = data.get(i).getPic_url();
dao.add(news_summary,news_title,pic_url);
}
List<Bean.DataBean> dataBeans = dao.queryData();
if(mPage == 1){
adapter.setMjihe(bean.getData());
}else {
adapter.addMjihe(bean.getData());
}
mPage++;
//停止刷新 加载
ptrListView.onRefreshComplete();
return null;
}
/* List<Bean.DataBean> data = bean.getData();
for (int i = 0 ; i<data.size();i++){
String news_summary = data.get(i).getNews_summary();
String news_title = data.get(i).getNews_title();
String pic_url = data.get(i).getPic_url();
dao.add(news_summary,news_title,pic_url);
}
List<Bean.DataBean> dataBeans = dao.queryData();*/
});
}
private void initdata() {
list_path = new ArrayList <>();
list_title = new ArrayList <>();
list_path.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic21363tj30ci08ct96.jpg");
list_path.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic259ohaj30ci08c74r.jpg");
list_path.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic2b16zuj30ci08cwf4.jpg");
list_path.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic2e7vsaj30ci08cglz.jpg");
list_title.add("呃呃呃");
list_title.add("哈哈哈");
list_title.add("666");
list_title.add("嗯嗯嗯");
banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE);
banner.setImageLoader(new ImageLoader() {
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
Glide.with(context).load((String) path).into(imageView);
}
});
banner.setImages(list_path);
banner.setBannerAnimation(Transformer.Default);
banner.setDelayTime(2000);
banner.setBannerTitles(list_title);
banner.isAutoPlay(true);
banner.setIndicatorGravity(BannerConfig.CENTER).start();
}
/* @Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
xListView.setPullLoadEnable(true);
xListView.setPullRefreshEnable(true);
xListView.setXListViewListener(new XListView.IXListViewListener() {
@Override
public void onRefresh() {
mpage = 1;
loadData();
}
@Override
public void onLoadMore() {
mpage++;
loadData();
}
});
loadData();
}
private String path ="http://api.expoon.com/AppNews/getNewsList/type/1/p/?d";
private void loadData() {
NetUtil.getInstance().getRequest(String.format(path, mpage), Bean.class, new NetUtil.Callback<Bean>() {
@Override
public void onSuccess(Bean bean) {
if(mpage == 1){
adapter.setMjihe(bean.getData());
}else{
adapter.addMjihe(bean.getData());
}
xListView.stopLoadMore();
xListView.stopRefresh();
}
});
}*/
}
Top2Fragment
public class Top2Fragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
TextView textView = new TextView(getActivity());
textView.setText("页面");
return textView;
}
}
VideoFragment
public class VideoFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
TextView textView = new TextView(getActivity());
textView.setText(getClass().getSimpleName());
return textView;
}
}
App
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
String path = Environment.getExternalStorageDirectory()+"/image";
File file = new File(path);
ImageLoaderConfiguration configuration = null;
configuration = new ImageLoaderConfiguration.Builder(this)
.memoryCacheSize(10)
.diskCacheSize(50*1024*1024)
.diskCache(new UnlimitedDiskCache(file))
.build();
com.nostra13.universalimageloader.core.ImageLoader.getInstance().init(configuration);
}
}
NetUtil
public class NetUtil {
private static NetUtil instance;
private Gson gson;
private Dao dao;
private NetUtil(){
gson = new Gson();
}
public static NetUtil getInstance() {
if(instance == null){
instance = new NetUtil();
}
return instance;
}
public interface Callback<T>{
List <Bean.DataBean> onSuccess(T t);
}
public void getRequest(final String urlStr,final Class clazz, final Callback callback){
new AsyncTask<String,Void,Object>(){
@Override
protected Object doInBackground(String... strings) {
return getRequest(urlStr, clazz);
}
@Override
protected void onPostExecute(Object o) {
callback.onSuccess(o);
}
}.execute(urlStr);
}
private <T> T getRequest(String urlStr, Class clazz) {
return (T) gson.fromJson(getRequest(urlStr),clazz);
}
private String getRequest(String urlStr) {
String result ="";
try {
URL url = new URL(urlStr);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setConnectTimeout(5000);
urlConnection.setReadTimeout(5000);
int responseCode = urlConnection.getResponseCode();
if(responseCode == 200){
result = stream(urlConnection.getInputStream());
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
private String stream(InputStream inputStream) throws IOException {
StringBuilder builder = new StringBuilder();
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
for(String tmp = br.readLine(); tmp != null ; tmp = br.readLine()){
builder.append(tmp);
}
return builder.toString();
}
}