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;
}
}
}