您的位置:首页 > 理论基础 > 计算机网络

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

2017-04-26 16:10 387 查看
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.onActi
4000
vityCreated(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;
}
}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐