viewpager和跳转获取网址和小圆点

----------------------------------------------------------主页面

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
网络权限

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值