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

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;


@Override
public 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
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment1,container,false);
}


@Override
public 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();

}

@Override
public 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;
    }
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值