从网络获取图片进行自动轮播以及其他

来源:互联网 发布:三国霸业源码 编辑:程序博客网 时间:2024/06/16 01:49

package com.example.mounthexam.fragment;

import android.content.Context;
import android.nfc.Tag;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.example.mounthexam.R;
import com.example.mounthexam.constant.Constant;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class Fragment1 extends Fragment implements View.OnClickListener {
public static final String TAG = “Fragment1”;
private ViewPager vp;
private int currentPosition = 0;
private List imageList;
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 0:
//处理轮播
vp.setCurrentItem(currentPosition);
break;
case 1:
//修改ui

               String str = (String) msg.obj;                tvWeatherInfo.setText(str);                break;        }    }};private EditText etCityName;private TextView tvWeatherInfo;@Overridepublic void onCreate(@Nullable Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    //创建图片连接的集合    imageList = new ArrayList<>();    imageList.add("http://i3.s2.dpfile.com/2010-12-20/6201691_b.jpg(249x249)/thumb.jpg");    imageList.add("http://i2.dpfile.com/s/img/shopnopic_x249.9182bfb823d671e1eb86a239ca54f88e.png");    imageList.add("http://i1.s1.dpfile.com/pc/f59ce7b879eea202f36692aa9ead9dac(249x249)/thumb.jpg");}@Nullable@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {    return inflater.inflate(R.layout.fragment1,container,false);}@Overridepublic void onActivityCreated(@Nullable Bundle savedInstanceState) {    super.onActivityCreated(savedInstanceState);    vp = (ViewPager) getView().findViewById(R.id.vp);    tvWeatherInfo = (TextView) getView().findViewById(R.id.tvWeatherInfo);    etCityName = (EditText) getView().findViewById(R.id.etCityName);    getView().findViewById(R.id.btnFind).setOnClickListener(this);    //设置适配器    vp.setAdapter(new MyPagerAdapter());    autoPlay();}@Overridepublic void onClick(View v) {    // TODO: 2017/4/25 search action    switch (v.getId()){        case R.id.btnFind:        {           String cityName = etCityName.getText().toString().trim();            if(!TextUtils.isEmpty(cityName)){                //请求数据                getWeatherInfo(cityName);            }else {                Toast.makeText(getActivity(), "城市名称不能为空!", Toast.LENGTH_SHORT).show();            }        }            break;    }}/** * 轮播 */private void autoPlay(){    new Thread(){        @Override        public void run() {            super.run();            while (true){                SystemClock.sleep(3000);                currentPosition++;                handler.sendEmptyMessage(0);            }        }    }.start();}//获取天气信息private void getWeatherInfo(final String cityName){    new Thread(){        @Override        public void run() {            super.run();            try {                //创建一个信封                SoapSerializationEnvelope envelop = new SoapSerializationEnvelope(SoapEnvelope.VER11);                //得到一张信纸                SoapObject soapObj = new SoapObject(Constant.NAME_SPACE,Constant.METHOD_NAME);                //添加请求参数信息  写具体的信                soapObj.addProperty("theUserID",Constant.USER_ID);                soapObj.addProperty("theCityCode",cityName);                //添加到信封                envelop.bodyOut = soapObj;                //设置平台兼容性                envelop.dotNet = true;                //向服务发起建立连接                HttpTransportSE htse = new HttpTransportSE(Constant.URL);                //发送请求                htse.call(Constant.NAME_SPACE + Constant.METHOD_NAME,envelop);                //创建一个容器                StringBuffer sb = new StringBuffer();                //等待服务器响应                if(envelop.getResponse() != null){//成功                    //得到相应内容                    SoapObject results = (SoapObject) envelop.bodyIn;                    //解析                    SoapObject subSoapObj = (SoapObject) results.getProperty("getWeatherResult");                    //for (int i = 0; i < subSoapObj.getPropertyCount(); i++) {                        //注意 key-value  看作是一个soapprimitive类型                        //SoapPrimitive childResult = (SoapPrimitive) subSoapObj.getProperty(i);                        //Log.d(TAG, "run: "+childResult);                        sb.append("今日天气状况 : "+subSoapObj.getProperty(4)+"\r\n" +                                "当前城市 : "+subSoapObj.getProperty(1));                    Log.d(TAG, "run: "+sb.toString());                    //}                    Message msg = handler.obtainMessage();                    msg.what = 1;                    msg.obj = sb.toString();                    handler.sendMessage(msg);                }            } catch (Exception e) {                e.printStackTrace();            }        }    }.start();}/** * viewpager的适配器 */class MyPagerAdapter extends PagerAdapter{    private DisplayImageOptions options;    public MyPagerAdapter(){        //构建图片的缓存选项        options = new DisplayImageOptions.Builder()                .cacheInMemory(true)                .cacheOnDisk(true)                .build();    }    @Override    public int getCount() {        return Integer.MAX_VALUE;    }    @Override    public boolean isViewFromObject(View view, Object object) {        return view == object;    }    @Override    public void destroyItem(ViewGroup container, int position, Object object) {        //super.destroyItem(container, position, object);        container.removeView((View) object);    }    @Override    public Object instantiateItem(ViewGroup container, int position) {        ImageView imageView = new ImageView(getActivity());        //加载图片        ImageLoader.getInstance().                displayImage(imageList.get(position % imageList.size()),imageView,options);        container.addView(imageView);        return imageView;    }}

}

0 0