/////////////////////////////////////////////////////////
package com.example.app2;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.example.app2.activity.ZhutiQH;
import com.example.app2.fragment.One;
import com.example.app2.fragment.Three;
import com.example.app2.fragment.Two;
import com.hjm.bottomtabbar.BottomTabBar;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
public class MainActivity extends AppCompatActivity {
private BottomTabBar mb;
private TextView zhuti;
private RelativeLayout re;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//注册EventBus
EventBus.getDefault().register(this);
re =(RelativeLayout)findViewById(R.id.re);
SharedPreferences kai = getSharedPreferences("Kai", MODE_PRIVATE);
int laicolor = kai.getInt("kaicolor", 0);
if(laicolor!=0){
re.setBackgroundColor(laicolor);
}
mb =(BottomTabBar)findViewById(R.id.bottom_tab_bar);
zhuti =(TextView) findViewById(R.id.zhuti);
mb.init(getSupportFragmentManager())
.setImgSize(50,50)
.setFontSize(15)
.setTabPadding(4,6,10)
.setChangeColor(Color.RED,Color.DKGRAY)
.addTabItem("Home",R.drawable.bottom_home, One.class)
.addTabItem("Read",R.drawable.bottom_read, Two.class)
.addTabItem("Me",R.drawable.bottom_me, Three.class)
.isShowDivider(false)
.setOnTabChangeListener(new BottomTabBar.OnTabChangeListener() {
@Override
public void onTabChange(int position, String name) {
}
});
//点击跳转到切换主题页
zhuti.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, ZhutiQH.class);
startActivity(intent);
}
});
}
//接收
@Subscribe
public void onEventMainThread(Object event) {
int a= (int) event;
re.setBackgroundColor(a);
}
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);//反注册EventBus
}
}
////////////////////////////////////////////////////////////////
package com.example.app2.activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.example.app2.R;
import org.greenrobot.eventbus.EventBus;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
public class ZhutiQH extends AppCompatActivity {
@BindView(R.id.btn1)
Button btn1;
@BindView(R.id.btn2)
Button btn2;
@BindView(R.id.btn3)
Button btn3;
@BindView(R.id.btn4)
Button btn4;
@BindView(R.id.btn5)
Button btn5;
private RelativeLayout zhutiqh;
private TextView fanhui;
private int color=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_zhuti_qh);
ButterKnife.bind(this);
zhutiqh = (RelativeLayout) findViewById(R.id.zhutiqh);
fanhui = (TextView) findViewById(R.id.fanhui);
SharedPreferences kai = getSharedPreferences("Kai", MODE_PRIVATE);
int laicolor = kai.getInt("kaicolor", 0);
if(laicolor!=0){
zhutiqh.setBackgroundColor(laicolor);
}
fanhui.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
}
});
}
@OnClick({R.id.btn1, R.id.btn2, R.id.btn3, R.id.btn4, R.id.btn5})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.btn1:
color = getResources().getColor(R.color.colorLv);
zhutiqh.setBackgroundColor(color);
break;
case R.id.btn2:
color = getResources().getColor(R.color.colorLan);
zhutiqh.setBackgroundColor(color);
break;
case R.id.btn3:
color = getResources().getColor(R.color.colorHong);
zhutiqh.setBackgroundColor(color);
break;
case R.id.btn4:
color = getResources().getColor(R.color.colorHuang);
zhutiqh.setBackgroundColor(color);
break;
case R.id.btn5:
color = getResources().getColor(R.color.colorShenLan);
zhutiqh.setBackgroundColor(color);
break;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().post(color);
SharedPreferences kai = getSharedPreferences("Kai", MODE_PRIVATE);
SharedPreferences.Editor edit = kai.edit();
edit.putInt("kaicolor",color);
edit.commit();
}
}
/////////////////////////////////////////////////////////////////////三秒跳转
package com.example.app2.activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import com.example.app2.MainActivity;
import com.example.app2.R;
import java.util.Timer;
import java.util.TimerTask;
public class Main2Activity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
//主页图片的timer计时器 跳转
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
Intent intent = new Intent(Main2Activity.this, MainActivity.class);
startActivity(intent);
}
},2000);
}
}
///////////////////////////////////////////////////////////////带Intent值跳转
package com.example.app2.adapter;
import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.bumptech.glide.Glide;
import com.example.app2.R;
import com.example.app2.activity.MeinvTu;
import com.example.app2.bean.FuliBean;
import java.util.List;
/**
* Created by
*/
public class FuliAdapter extends RecyclerView.Adapter<FuliAdapter.ViewHolder> {
private Context context;
private List<FuliBean.ResultsBean> list;
public FuliAdapter(Context context, List<FuliBean.ResultsBean> list) {
this.context = context;
this.list = list;
}
class ViewHolder extends RecyclerView.ViewHolder{
private final ImageView img;
public ViewHolder(View itemView) {
super(itemView);
img =itemView.findViewById(R.id.img);
}
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = View.inflate(context, R.layout.fuli, null);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
Glide.with(context).load(list.get(position).getUrl()).into(holder.img);
holder.img.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(context, MeinvTu.class);
intent.putExtra("imga",list.get(position).getUrl());
context.startActivity(intent);
}
});
}
@Override
public int getItemCount() {
return list.size();
}
}
//////////////////////////////////////////////////////////////点击美女之后跳转
package com.example.app2.activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.animation.Animation;
import android.view.animation.ScaleAnimation;
import android.widget.ImageView;
import com.bumptech.glide.Glide;
import com.example.app2.R;
//福利里面点击的放大图片
public class MeinvTu extends AppCompatActivity {
private ImageView meinv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_meinv_tu);
meinv =(ImageView)findViewById(R.id.meinv);
Intent intent = getIntent();
String imga = intent.getStringExtra("imga").toString();
Glide.with(this).load(imga).into(meinv);
ScaleAnimation animation =new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
animation.setDuration(5000);//设置动画持续时间
meinv.setAnimation(animation);
}
}
///////////////////////////////////////////////////////////////工具类
package com.example.app2.utils;
import com.example.app2.service.ApiService;
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
/**
* Created by
*/
public class RetrofitUtils {
private static volatile RetrofitUtils instance;
private final ApiService apiService;
private RetrofitUtils(){
Retrofit retrofit=new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.baseUrl("http://gank.io/api/")
.client(new OkHttpClient.Builder().build())
.build();
apiService = retrofit.create(ApiService.class);
}
public static RetrofitUtils getInstance(){
if (instance==null){
synchronized (RetrofitUtils.class){
if (null==instance){
instance=new RetrofitUtils();
}
}
}
return instance;
}
public ApiService getApiService(){
return apiService; }
}
/////////////////////////////////////////////////////////////////
package com.example.app2.service;
import com.example.app2.bean.AndroidBean;
import com.example.app2.bean.FuliBean;
import com.example.app2.bean.TwoBean;
import io.reactivex.Flowable;
import retrofit2.http.GET;
import retrofit2.http.Path;
/**
* Created by
*/
public interface ApiService {
@GET("data/Android/10/{as}")
Flowable<AndroidBean> getNews(@Path("as") String string);
@GET("data/iOS/20/{as}")
Flowable<AndroidBean> getFuli(@Path("as") String string);
@GET("data/福利/10/{as}")
Flowable<FuliBean> getMeinv(@Path("as") String string);
@GET("data/all/20/{as}")
Flowable<TwoBean> getTwo(@Path("as") String string);
}
/////////////////////////////////////////////////////////
package com.example.app2.presenter;
/**
* Created by
*/
public interface BasePersenter {
void getData(String map,String tag);
}
////////////////////////////////////////////////////////
package com.example.app2.presenter;
import com.example.app2.bean.AndroidBean;
import com.example.app2.bean.FuliBean;
import com.example.app2.bean.TwoBean;
import com.example.app2.iview.Iview;
import com.example.app2.model.Imodel;
import com.example.app2.model.NewsModel;
import io.reactivex.Flowable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
import io.reactivex.subscribers.DisposableSubscriber;
/**
* Created
*/
public class NewsPersenter implements BasePersenter {
private Iview iv;
private DisposableSubscriber subscriber;
public void attacView(Iview iv){
this.iv=iv;
}
public void detachView(){
if (iv!=null){
iv=null;
}
if (subscriber!=null){//rxjava的防止内存泄漏
if (!subscriber.isDisposed()){
subscriber.isDisposed();
}
}
}
@Override
public void getData(String map, String tag) {
Imodel model=new NewsModel(this);//多态 this是当前的p层、
model.getData(map,tag);
}
public void getNews(Flowable<AndroidBean> news,final String tag){
news.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new DisposableSubscriber<AndroidBean>() {
@Override
public void onNext(AndroidBean dabean) {
iv.OnSuccess(dabean,tag);
}
@Override
public void onError(Throwable t) {
}
@Override
public void onComplete() {
}
});
}
public void getFuli(Flowable<AndroidBean> fuli,final String tag) {
fuli.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new DisposableSubscriber<AndroidBean>() {
@Override
public void onNext(AndroidBean dabean) {
iv.OnSuccess(dabean, tag);
}
@Override
public void onError(Throwable t) {
}
@Override
public void onComplete() {
}
});
}
public void getMeinv(Flowable<FuliBean> meinv, final String tag) {
meinv.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new DisposableSubscriber<FuliBean>() {
@Override
public void onNext(FuliBean fuliBean) {
iv.OnSuccess(fuliBean, tag);
}
@Override
public void onError(Throwable t) {
}
@Override
public void onComplete() {
}
});
}
public void getTwo(Flowable<TwoBean> two, final String tag) {
two.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new DisposableSubscriber<TwoBean>() {
@Override
public void onNext(TwoBean twoBean) {
iv.OnSuccess(twoBean, tag);
}
@Override
public void onError(Throwable t) {
}
@Override
public void onComplete() {
}
});
}
}
////////////////////////////////////////////////////////////
package com.example.app2.model;
/**
* Created by
*/
public interface Imodel {
void getData(String map, String tag);
}
///////////////////////////////////////////////////////////
package com.example.app2.model;
import com.example.app2.bean.AndroidBean;
import com.example.app2.bean.FuliBean;
import com.example.app2.bean.TwoBean;
import com.example.app2.presenter.NewsPersenter;
import com.example.app2.utils.RetrofitUtils;
import io.reactivex.Flowable;
/**
* Created by
*/
public class NewsModel implements Imodel {
private NewsPersenter presenter;
public NewsModel(NewsPersenter presenter){
this.presenter=presenter;
}
@Override
public void getData(String map, String tag) {
if (tag.equals("Android")) {
Flowable<AndroidBean> news = RetrofitUtils.getInstance().getApiService().getNews(map);
presenter.getNews(news,tag);
}else if(tag.equals("iOS")){
Flowable<AndroidBean> news = RetrofitUtils.getInstance().getApiService().getFuli(map);
presenter.getFuli(news,tag);
}else if(tag.equals("福利")){
Flowable<FuliBean> news = RetrofitUtils.getInstance().getApiService().getMeinv(map);
presenter.getMeinv(news,tag);
}else if(tag.equals("Two")){
Flowable<TwoBean> news = RetrofitUtils.getInstance().getApiService().getTwo(map);
presenter.getTwo(news,tag);
}
}
}
///////////////////////////////////////////////////////////////////
package com.example.app2.iview;
/**
* Created by
*/
public interface Iview {
void OnSuccess(Object o,String tag);
void OnFailed(Exception e,String tag);
}
///////////////////////////////////////////////////////////////////
package com.example.app2.fragment2;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.example.app2.R;
import com.example.app2.adapter.AndroidAdapter;
import com.example.app2.bean.AndroidBean;
import com.example.app2.iview.Iview;
import com.example.app2.presenter.NewsPersenter;
import com.jcodecraeer.xrecyclerview.XRecyclerView;
import java.util.ArrayList;
import java.util.List;
/**
* Created by
*/
public class One2 extends Fragment implements Iview{
private NewsPersenter presenter;
private XRecyclerView android_rv;
private AndroidAdapter adapter;
private List<AndroidBean.ResultsBean> results = new ArrayList<>();
private int count=1;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.one2, container, false);
android_rv =view.findViewById(R.id.android_rv);
//t添加刷新权限
android_rv.setLoadingMoreEnabled(true);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
presenter = new NewsPersenter();
presenter.attacView(this);
presenter.getData("1","Android");
LinearLayoutManager manager = new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false);
android_rv.setLayoutManager(manager);
}
@Override
public void OnSuccess(Object o, String tag) {
if (tag.equals("Android")) {
AndroidBean bean = (AndroidBean) o;
List<AndroidBean.ResultsBean> results1 = bean.getResults();
results.addAll(results1);
adapter = new AndroidAdapter(getActivity(), this.results);
android_rv.setAdapter(adapter);
//刷新与加载
android_rv.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
//开启主线程
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
results.clear();
presenter.getData("1","Android");
adapter.notifyDataSetChanged();
android_rv.refreshComplete();
}
});
}
@Override
public void onLoadMore() {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
count=count+1;
presenter.getData(count+"","Android");
adapter.notifyDataSetChanged();
android_rv.loadMoreComplete();
}
});
}
});
}
}
@Overridepackage com.example.app2.adapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.example.app2.R;
import com.example.app2.bean.AndroidBean;
import java.util.List;
/**
* Created by 柴晓凯 on 2017/12/18.
*/
public class AndroidAdapter extends RecyclerView.Adapter<AndroidAdapter.ViewHolder>{
private Context context;
private List<AndroidBean.ResultsBean> list;
public AndroidAdapter(Context context, List<AndroidBean.ResultsBean> list) {
this.context = context;
this.list = list;
}
class ViewHolder extends RecyclerView.ViewHolder{
private final ImageView img1;
private final TextView time;
private final TextView title;
public ViewHolder(View itemView) {
super(itemView);
img1=(ImageView)itemView.findViewById(R.id.img);
time =(TextView)itemView.findViewById(R.id.time);
title =(TextView)itemView.findViewById(R.id.title);
}
}
@Override
public AndroidAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = View.inflate(context, R.layout.android, null);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(AndroidAdapter.ViewHolder holder, int position) {
final List<String> images = list.get(position).getImages();
if(images!=null){
Glide.with(context).load(images.get(0).toString()).into(holder.img1);
}else{
Glide.with(context).load("http://www.cndog.net/tpb/2013-12/14/14970-6031.jpg").into(holder.img1);
}
holder.title.setText(list.get(position).getDesc());
holder.time.setText(list.get(position).getCreatedAt());
}
@Override
public int getItemCount() {
return list.size();
}
}
public void OnFailed(Exception e, String tag) { } //防止内存泄漏 @Override public void onDestroy() { super.onDestroy(); if (presenter!=null){ presenter.detachView(); } }}
/////////////////////////////////////////////////////////判断是否有图片 适配器
package com.example.app2.adapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.example.app2.R;
import com.example.app2.bean.AndroidBean;
import java.util.List;
/**
* Created by
*/
public class AndroidAdapter extends RecyclerView.Adapter<AndroidAdapter.ViewHolder>{
private Context context;
private List<AndroidBean.ResultsBean> list;
public AndroidAdapter(Context context, List<AndroidBean.ResultsBean> list) {
this.context = context;
this.list = list;
}
class ViewHolder extends RecyclerView.ViewHolder{
private final ImageView img1;
private final TextView time;
private final TextView title;
public ViewHolder(View itemView) {
super(itemView);
img1=(ImageView)itemView.findViewById(R.id.img);
time =(TextView)itemView.findViewById(R.id.time);
title =(TextView)itemView.findViewById(R.id.title);
}
}
@Override
public AndroidAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = View.inflate(context, R.layout.android, null);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(AndroidAdapter.ViewHolder holder, int position) {
final List<String> images = list.get(position).getImages();
if(images!=null){
Glide.with(context).load(images.get(0).toString()).into(holder.img1);
}else{
Glide.with(context).load("http://www.cndog.net/tpb/2013-12/14/14970-6031.jpg").into(holder.img1);
}
holder.title.setText(list.get(position).getDesc());
holder.time.setText(list.get(position).getCreatedAt());
}
@Override
public int getItemCount() {
return list.size();
}
}