----------------------------------------------------------主页面
package fragment.bwie.com.rikao13; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.google.gson.Gson; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; import java.util.List; import fragment.bwie.com.rikao13.adapter.ImageAdapter; import fragment.bwie.com.rikao13.bean.NewsListBean; public class MainActivity extends AppCompatActivity { private ViewPager pager; private TextView title; private List<NewsListBean.NewslistBean> list; private int i; private LinearLayout linearlayout; private List<ImageView> images; private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == 0) { int currentItem = pager.getCurrentItem(); pager.setCurrentItem(currentItem + 1); handler.sendEmptyMessageDelayed(0, 2000); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //局部变量 title = (TextView) findViewById(R.id.title); pager = (ViewPager) findViewById(R.id.pager); linearlayout = (LinearLayout) findViewById(R.id.linearlayout); //解析 AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... voids) { String path = "https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=6&page=1"; try { URL url = new URL(path); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setReadTimeout(5000); urlConnection.setConnectTimeout(5000); int responseCode = urlConnection.getResponseCode(); if (responseCode == 200) { InputStream inputStream = urlConnection.getInputStream(); String json = streamTostring(inputStream, "UTF-8"); Log.i("------", json); return json; } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson = new Gson(); //往集合添加 NewsListBean newsListBean = gson.fromJson(s, NewsListBean.class); list = newsListBean.getNewslist(); //新创建集合 List<String> tupian = new ArrayList<>(); //json解析获取的图片 for (int i = 0; i < list.size(); i++) { tupian.add(list.get(i).getPicUrl()); } initDos(); ImageAdapter imageAdapter = new ImageAdapter(list, MainActivity.this,handler); pager.setAdapter(imageAdapter); //自动循环 pager.setCurrentItem(list.size() * 10000); //设置时间 handler.sendEmptyMessageDelayed(0, 2000); pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { //设置viewpager下的标题 title.setText(list.get(position % list.size()).getTitle()); //循环小圆点的个数 for (int i = 0; i < images.size(); i++) { if (i == position % images.size()) { images.get(i).setImageResource(R.drawable.yes); } else { images.get(i).setImageResource(R.drawable.no); } } } @Override public void onPageScrollStateChanged(int state) { } }); } }; asyncTask.execute(); } private String streamTostring(InputStream inputStream, String s) { try { InputStreamReader inputStreamReader = new InputStreamReader(inputStream, s); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); StringBuilder builder = new StringBuilder(); String string = null; while ((string = bufferedReader.readLine()) != null) { builder.append(string); } bufferedReader.close(); return builder.toString(); } catch (Exception e) { e.printStackTrace(); } return null; } //设置小圆点 private void initDos() { images = new ArrayList<>(); linearlayout.removeAllViews(); for (int i = 0; i < list.size(); i++) { ImageView imageView = new ImageView(MainActivity.this); if (i == 0) { imageView.setImageResource(R.drawable.yes); } else { imageView.setImageResource(R.drawable.no); } images.add(imageView); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); //设置小圆点个数 params.setMargins(3, 0, 3, 0); linearlayout.addView(imageView, params); } } } -------------------------------------------------适配器
package fragment.bwie.com.rikao13.adapter; import android.content.Context; import android.content.Intent; import android.os.Handler; import android.support.v4.view.PagerAdapter; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.Toast; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import java.util.List; import fragment.bwie.com.rikao13.MainActivity; import fragment.bwie.com.rikao13.bean.NewsListBean; /** * Created by CZ on 2017/9/13. */ public class ImageAdapter extends PagerAdapter { List<NewsListBean.NewslistBean> list; Context context; Handler handler; public ImageAdapter(List<NewsListBean.NewslistBean> tupian, MainActivity context, Handler handler) { this.list = tupian; this.context = context; this.handler = handler; ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(context)); } @Override public int getCount() { return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } @Override public Object instantiateItem(ViewGroup container, final int position) { ImageView imageView = new ImageView(context); imageView.setScaleType(ImageView.ScaleType.FIT_XY); ImageLoader.getInstance().displayImage(list.get(position % list.size()).getPicUrl(), imageView); imageView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { boolean isTiaoZhuan = true; switch (motionEvent.getAction()) {//获取动作 case MotionEvent.ACTION_DOWN://按下 Log.i("--", "ACTION_DOWN"); handler.removeCallbacksAndMessages(null); break; case MotionEvent.ACTION_MOVE://移动 Log.i("--", "ACTION_MOVE"); isTiaoZhuan = false; handler.removeCallbacksAndMessages(null); break; case MotionEvent.ACTION_CANCEL://取消 Log.i("--", "ACTION_CANCEL"); isTiaoZhuan = false; handler.sendEmptyMessageDelayed(0, 2000); break; case MotionEvent.ACTION_UP://抬起 Log.i("--", "ACTION_UP"); if (isTiaoZhuan) { Toast.makeText(context, "跳转页面", Toast.LENGTH_SHORT).show(); Intent intent = new Intent(context , WebActivity.class); intent.putExtra("url" , list.get(position%list.size()).getUrl()); context.startActivity(intent); } handler.sendEmptyMessageDelayed(0, 2000); break; } //自己处理触摸事件....如果当前位置返回了true,,,点击事件将不会执行,,,表示动作自己处理,不会传递 return true; } }); container.addView(imageView); return imageView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } }
-------------------------------------------------------小圆点
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:radius="5dp"/> <size android:height="10dp" android:width="10dp"/> <solid android:color="#000000"/> </shape>
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:radius="5dp"/> <size android:height="10dp" android:width="10dp"/> <solid android:color="#00ff00"/> </shape>
-----------------------------------------------------------另一个页面
package fragment.bwie.com.rikao13.adapter; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import fragment.bwie.com.rikao13.R; /** * Created by CZ on 2017/9/13. */ public class WebActivity extends AppCompatActivity { private WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.web_activity); webView = (WebView) findViewById(R.id.web_view); Intent intent = getIntent(); String url = intent.getStringExtra("url"); //加载 webView.loadUrl(url); //设置 webView.setWebViewClient(new WebViewClient()); WebSettings settings = webView.getSettings(); settings.setJavaScriptEnabled(true); settings.setJavaScriptCanOpenWindowsAutomatically(true); } }
-------------------------------------------------------imageloder的
package fragment.bwie.com.rikao13.imageapplication; import android.app.Application; import fragment.bwie.com.rikao13.util.ImageloaderUtil; /** * Created by CZ on 2017/9/13. */ public class BaseApplication extends Application { @Override public void onCreate() { super.onCreate(); //初始化 ImageloaderUtil.initConfig(this); } }
------------------------------------------------------imageloder所有
package fragment.bwie.com.rikao13.util; import android.content.Context; import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache; import com.nostra13.universalimageloader.cache.disc.naming.HashCodeFileNameGenerator; import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.nostra13.universalimageloader.core.assist.QueueProcessingType; import com.nostra13.universalimageloader.core.decode.BaseImageDecoder; import com.nostra13.universalimageloader.core.download.BaseImageDownloader; import com.nostra13.universalimageloader.utils.StorageUtils; import java.io.File; /** * Created by CZ on 2017/9/13. */ public class ImageloaderUtil { public static void initConfig(Context context) { File cacheDir = StorageUtils.getCacheDirectory(context); //缓存文件夹路径 ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context) .threadPoolSize(3) // default 线程池内加载的数量 .threadPriority(Thread.NORM_PRIORITY - 2) // default 设置当前线程的优先级 .tasksProcessingOrder(QueueProcessingType.FIFO) // default .denyCacheImageMultipleSizesInMemory() .memoryCache(new LruMemoryCache(2 * 1024 * 1024)) //可以通过自己的内存缓存实现 .memoryCacheSize(2 * 1024 * 1024) // 内存缓存的最大值 .memoryCacheSizePercentage(13) // default .diskCache(new UnlimitedDiskCache(cacheDir)) // default 可以自定义缓存路径 .diskCacheSize(50 * 1024 * 1024) // 50 Mb sd卡(本地)缓存的最大值 .diskCacheFileCount(100) // 可以缓存的文件数量 // default为使用HASHCODE对UIL进行加密命名, 还可以用MD5(new Md5FileNameGenerator())加密 .diskCacheFileNameGenerator(new HashCodeFileNameGenerator()) .imageDownloader(new BaseImageDownloader(context)) // default .imageDecoder(new BaseImageDecoder(true)) // default .defaultDisplayImageOptions(DisplayImageOptions.createSimple()) // default .writeDebugLogs() // 打印debug log .build(); //开始构建 ImageLoader.getInstance().init(config); } }
-------------------------------------主页面布局
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="200dp"></android.support.v4.view.ViewPager> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="15dp" android:layout_marginTop="170dp" android:orientation="horizontal"> <TextView android:id="@+id/title" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="4"/> <LinearLayout android:id="@+id/linearlayout" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="2" android:orientation="horizontal"></LinearLayout> </LinearLayout> </RelativeLayout>
---------------------------------------------另一个页面布局
<?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"> <WebView android:id="@+id/web_view" android:layout_width="match_parent" android:layout_height="match_parent"> </WebView> </LinearLayout>
-------------------------------------包
gson
nostra
网络权限