ImageLoader,WebView,无线轮播,缓存到所要的地址
来源:互联网 发布:js图片滚动代码 编辑:程序博客网 时间:2024/06/08 17:22
*主Activity WebActivity清单文件上要有+获取网络的权限
*ImageLoader所需导入的
*compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
public class MainActivity extends AppCompatActivity { private ViewPager pager; List<String> lists = new ArrayList<>(); private List<ImageView> images; private LinearLayout linearLayout; private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.what == 0){ int currentItem = pager.getCurrentItem(); pager.setCurrentItem(currentItem+1); handler.sendEmptyMessageDelayed(0 , 2000); } } }; private TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); pager = (ViewPager) findViewById(R.id.view_pager); textView = (TextView) findViewById(R.id.text_view); linearLayout = (LinearLayout) findViewById(R.id.linear_layout); 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 connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setReadTimeout(5000); connection.setConnectTimeout(5000); int responseCode = connection.getResponseCode(); if (responseCode == 200){ InputStream inputStream = connection.getInputStream(); String json = StreamToString(inputStream, "utf-8"); return json; } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); Gson gson = new Gson(); UserBean userBean = gson.fromJson(s, UserBean.class); final List<UserBean.NewslistBean> list = userBean.getNewslist(); for (int i = 0 ; i < list.size() ; i ++){ lists.add(list.get(i).getPicUrl()); } //初始化小圆点 MyAdapter adapter = new MyAdapter(MainActivity.this, list , handler); pager.setAdapter(adapter); //初始化小圆点 initDoc(); //设置ViewPager初始展示的位置 pager.setCurrentItem(lists.size()*10000); //发送延时消息 handler.sendEmptyMessageDelayed(0 , 2000); //viewPager页面改变的监听事件 pager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { textView.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.doc_select); }else { images.get(i).setImageResource(R.drawable.doc_select_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 = ""; while ((string=bufferedReader.readLine()) != null){ builder.append(string); } bufferedReader.close(); Log.i("builder" , "builder---->" + builder.toString()); return builder.toString(); } catch (Exception e) { e.printStackTrace(); } return null; } //初始化小圆点 private void initDoc() { //首先需要一个集合记录这些小圆点的图片,,,,当页面切换的时候,可以从集合中取出imageView进行显示图片的设置 images = new ArrayList<>(); linearLayout.removeAllViews();//清空/移除所有的view for (int i = 0;i<lists.size();i++){ ImageView imageView = new ImageView(MainActivity.this); if (i==0){//显示第一页,,,红的 imageView.setImageResource(R.drawable.doc_select); }else {//绿的 imageView.setImageResource(R.drawable.doc_select_no); } //添加到集合 images.add(imageView); //加入到线性布局中显示 LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT); params.setMargins(5,0,5,0); linearLayout.addView(imageView,params); } }}
*adapter
public class MyAdapter extends PagerAdapter { Context context; List<UserBean.NewslistBean> list; Handler handler; public MyAdapter(Context context, List<UserBean.NewslistBean> list, Handler handler) { this.context = context; this.list = list; 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触摸的监听事件 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(1 , 2000); break; default: break; } //自己处理触摸事件....如果当前位置返回了true,,,点击事件将不会执行,,,表示动作自己处理,不会传递 return true; } }); //添加到容器 container.addView(imageView); return imageView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); }}*两个XML布局*doc_select
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#ff0000"/> <corners android:radius="5dp"/> <size android:height="10dp" android:width="10dp"/></shape>*doc_select_no
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#00ff00"/> <corners android:radius="5dp"/> <size android:height="10dp" android:width="10dp"/></shape>*BASEApplicationpublic class Basepplicent extends Application { @Override public void onCreate() { super.onCreate(); ImageLoaderUtil.initConfig(this); }}*ImageLoaderpublic class ImageLoaderUtil { public static void initConfig(Context context) {//默认的缓存路径 File cacheDir = StorageUtils.getCacheDirectory(context); //缓存文件夹路径//自己定义的缓存地址File cacheDir = new File(Environment.getExternalStorageDirectory(),"/image"); //缓存文件夹路径 if (!cacheDir.exists()){ cacheDir.mkdirs(); } 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); }}*WebActivitypublic class WebActivity extends AppCompatActivity { private WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_web); 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); }}
阅读全文
0 0
- ImageLoader,WebView,无线轮播,缓存到所要的地址
- 无线轮播+webView
- ViewPager无限轮播,加载网络数据,ImageLoader加载图片并缓存到SD卡上
- ViewPager无限轮播,加载网络数据,ImageLoader加载图片并缓存到SD卡上
- ViewPage的无线轮播
- 欣的无线轮播!
- 带有小圆点的无线轮播
- banner实现广告的无线轮播
- 关于ViewPager的简单无线轮播
- Android 无线轮播 Banner 的使用
- 无限轮播+网络请求+GridView展示数据+ImageLoader-SD卡缓存+点击轮播图跳转页面
- 无线轮播
- 无线轮播
- ViewPager 无线轮播
- 图片无线轮播
- ViewPager无线轮播
- 无线轮播
- 无线轮播
- 39个C语言小程序(适合新手)
- 做毕设(十)——后台管理
- Java compiler level does not match解决方法
- Storm Setting Up a Development Environment
- 总结 git配置用户以及基本应用
- ImageLoader,WebView,无线轮播,缓存到所要的地址
- Eclipse新建Spring-boot项目,打包部署并输出HelloWord
- 九、Git-添加远程仓库
- PHP错误类型及屏蔽方法
- 达内云笔记(三)模式初涉
- stm32 使用外部时钟的注意事项(jlink调试输出无信息)
- 爬取房天下(全站)
- tomcat 集群 session复制共享 redis实战版本
- LeetCode 633 Sum of Square Numbers