//侧滑页面 package com.bwie.w2.activity; 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.app.FragmentManager; 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.util.Log; import android.view.Gravity; import android.view.View; import android.widget.ImageView; import com.bwie.w2.Frament.ChannelFrament; import com.bwie.w2.R; import com.bwie.w2.Utils.HttpUtils; import com.bwie.w2.apdater.Allapdater; import com.bwie.w2.bean.Allbean; import com.bwie.w2.bean.ChannelBean; import com.google.gson.Gson; import java.util.ArrayList; import java.util.List; public class DrawableActivity extends AppCompatActivity { private ImageView image_show; private ImageView image_close; private DrawerLayout dl; private HttpUtils httpUtils; private TabLayout tab_layout; private ViewPager vp; private List<ChannelBean> titles=new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_drawable); init(); getimageshowOnClickListener(); getaddDrawerListener(); //创建数据 titles=new ArrayList<>(); titles.add(new ChannelBean("All","https://gank.io/api/data/all")); titles.add(new ChannelBean("Android","https://gank.io/api/data/Android")); titles.add(new ChannelBean("IOS","https://gank.io/api/data/iOS")); vp.setAdapter(new ChannelApdater(getSupportFragmentManager())); tab_layout.setupWithViewPager(vp); } //初始化方法 private void init() { image_show = findViewById(R.id.image_show); image_close = findViewById(R.id.image_close); dl = findViewById(R.id.dl); tab_layout = findViewById(R.id.tablayout); vp = findViewById(R.id.vp); } //侧滑菜单 private void getimageshowOnClickListener() { image_show.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { switch (v.getId()){ case R.id.image_show: if(dl.isDrawerOpen(Gravity.START)){ dl.closeDrawer(Gravity.START); }else{ dl.openDrawer(Gravity.START); } break; } } }); } private void getaddDrawerListener() { dl.addDrawerListener(new DrawerLayout.DrawerListener() { @Override public void onDrawerSlide(@NonNull View drawerView, float slideOffset) { //滑动过程中不断回调 slideOffset:0~1 View content = dl.getChildAt(0); View view = drawerView; float scale = 1 - slideOffset; content.setTranslationX(view.getMeasuredWidth() * (1-scale)); } @Override public void onDrawerOpened(@NonNull View drawerView) { } @Override public void onDrawerClosed(@NonNull View drawerView) { } @Override public void onDrawerStateChanged(int newState) { } }); } private class ChannelApdater extends FragmentPagerAdapter { public ChannelApdater(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return ChannelFrament.netInstance(titles.get(position).url); } @Override public int getCount() { return titles.size(); } @Nullable @Override public CharSequence getPageTitle(int position){ return titles.get(position).title; } } }
//Frament页面
package com.bwie.w2.Frament; import android.content.Intent; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.TextView; import com.bwie.w2.R; import com.bwie.w2.Utils.HttpUtils; import com.bwie.w2.activity.DrawableActivity; import com.bwie.w2.activity.WebActivty; import com.bwie.w2.apdater.Allapdater; import com.bwie.w2.bean.Allbean; import com.bwie.w2.bean.ChannelResultBean; import com.google.gson.Gson; import java.util.ArrayList; import java.util.List; import xlistview.bawei.com.xlistviewlibrary.XListView; /** * A simple {@link Fragment} subclass. */ public class ChannelFrament extends Fragment implements HttpUtils.NetCallback, XListView.IXListViewListener { private TextView tv_title; private HttpUtils httpUtils; private int page=1; private final int COUNT=10; private String s; private String counurl; private XListView xlistview; private Allapdater apdater; private List<ChannelResultBean.ResultsBean> results; public ChannelFrament() { // Required empty public constructor } public static Fragment netInstance(String s) { ChannelFrament channelFrament = new ChannelFrament(); Bundle bundle = new Bundle(); bundle.putString("title",s); channelFrament.setArguments(bundle); return channelFrament; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View inflate = inflater.inflate(R.layout.fragment_channel_frament, container, false); tv_title = inflate.findViewById(R.id.tv_title); xlistview = inflate.findViewById(R.id.xlistview); return inflate; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); //上拉加载 下拉刷新 xlistview.setPullLoadEnable(true); xlistview.setPullRefreshEnable(true); xlistview.setXListViewListener(this); results = new ArrayList<>(); apdater = new Allapdater(getActivity(), results); xlistview.setAdapter(this.apdater); xlistview.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { ChannelResultBean.ResultsBean item = (ChannelResultBean.ResultsBean) apdater.getItem(position); Intent intent = new Intent(getActivity(),WebActivty.class); intent.putExtra("url",item.getUrl()); startActivity(intent); } }); Bundle bundle = getArguments(); String title = bundle.getString("title"); tv_title.setText(title); /* * 回调接口 * */ s=getArguments().getString("title"); httpUtils = HttpUtils.getInstance(); counurl= s+"/"+ COUNT+"/"; httpUtils.getServiceData(counurl+page,this); } @Override public void onsucces(String result) { Log.i("aaa",result+"ssss"); Gson gson = new Gson(); ChannelResultBean resultBean = gson.fromJson(result, ChannelResultBean.class); // Log.i("bbb",results+"sss"); if(page==1){ //清空一下 results.clear(); } results.addAll(resultBean.getResults()); apdater.notifyDataSetChanged(); //停止刷新 xlistview.stopRefresh(); xlistview.stopLoadMore(); /* xlistview.postDelayed(new Runnable() { @Override public void run() { xlistview.stopRefresh(); } }, 1000); xlistview.postDelayed(new Runnable() { @Override public void run() { xlistview.stopLoadMore(); } }, 1000); */ } @Override public void onError(String errormge) { } @Override public void onRefresh() { page=1; httpUtils.getServiceData(counurl+page,this); } @Override public void onLoadMore() { page++; httpUtils.getServiceData(counurl+page,this); } }
//WebView页面
package com.bwie.w2.activity; import android.graphics.Bitmap; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; import com.bwie.w2.R; import com.nostra13.universalimageloader.core.ImageLoader; public class WebActivty extends AppCompatActivity { private WebView webView; private FrameLayout flProgress; private TextView tvPorgress; private ImageView ivImage; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_web_activty); webView = findViewById(R.id.web_view); flProgress = findViewById(R.id.fl_progress); tvPorgress = findViewById(R.id.tv_progress); ivImage = findViewById(R.id.iv_image); webView.setVisibility(View.GONE); flProgress.setVisibility(View.GONE); ivImage.setVisibility(View.GONE); webView.setWebViewClient(new WebViewClient(){ @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); flProgress.setVisibility(View.GONE); } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); flProgress.setVisibility(View.INVISIBLE); } }); webView.setWebChromeClient(new WebChromeClient(){ @Override public void onProgressChanged(WebView view, int newProgress) { super.onProgressChanged(view, newProgress); tvPorgress.setText(newProgress+"%"); } }); //读取url String url = getIntent().getStringExtra("url"); //判断url是否为图片 if(url.endsWith(".jpg")){ ivImage.setVisibility(View.GONE); ImageLoader.getInstance().displayImage(url,ivImage); }else{ webView.setVisibility(View.VISIBLE); webView.loadUrl(url); } } }
//工具类
package com.bwie.w2.Utils; import android.os.AsyncTask; import android.text.TextUtils; import android.util.Log; import com.bwie.w2.Frament.ChannelFrament; import com.google.common.io.CharStreams; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import javax.net.ssl.HttpsURLConnection; public class HttpUtils { private static final HttpUtils ourInstance = new HttpUtils(); public static final String TAG = HttpUtils.class.getSimpleName(); public static HttpUtils getInstance() { return ourInstance; } public HttpUtils() { } public void getServiceData(String s, NetCallback netCallback) { new LodaData(netCallback).execute(s); } /* * * 接口回调实现过程 * 声明一个接口 * 进行引用 * */ public interface NetCallback{ void onsucces(String result); void onError(String errormge); } //网络请求 /* public void getServiceData(String s,NetCallback NetCallback){ new LodaData(NetCallback).execute(s); }*/ //网络请求 class LodaData extends AsyncTask<String,Void,String> { private NetCallback netCallback; public LodaData(NetCallback netCallback) { this.netCallback = netCallback; } //网络加载方法 @Override protected String doInBackground(String... strings) { try { URL url = new URL(strings[0]); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setReadTimeout(5000); connection.setConnectTimeout(5000); connection.setRequestMethod("GET"); if (connection.getResponseCode() == HttpsURLConnection.HTTP_OK) { return CharStreams.toString(new InputStreamReader(connection.getInputStream(), "UTF-8")); } } catch (Exception e) { e.printStackTrace(); } return null; } /* @Override protected void onPostExecute(String s) { super.onPostExecute(s); Log.i(TAG, "s:" + s); }*/ //成功之后返回的方法 @Override protected void onPostExecute(String s) { super.onPostExecute(s); if (netCallback != null) { if (TextUtils.isEmpty(s)) { netCallback.onError("服务器没有响应"); } else { netCallback.onsucces(s); } } } } }