您的位置:首页 > 其它

定位加上拉加载下拉刷新

2016-06-01 14:36 190 查看
//

工具类解析json

///

import java.io.IOException;

import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.client.ClientProtocolException;

import org.apache.http.client.HttpClient;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.util.EntityUtils;

public class NewWorkUtils {

private static String URL = "http://api.fang.anjuke.com/m/android/1.3/shouye/recInfosV3/?city_id=14&lat=40.04652&lng=116.306033&api_key=androidkey&sig=9317e9634b5fbc16078ab07abb6661c5&macid=45cd2478331b184ff0e15f29aaa89e3e&app=a-ajk&_pid=11738&o=PE-TL10-user+4.4.2+HuaweiPE-TL10+CHNC00B260+ota-rel-keys%2Crelease-keys&from=mobile&m=Android-PE-TL10&cv=9.5.1&cid=14&i=864601026706713&v=4.4.2&qtime=20160411091603&pm=b61&uuid=1848c59c-185d-48d9-b0e9-782016041109&_chat_id=0";

public static String getData(int id) {

String rs = "";

try {

HttpClient httpClient = new DefaultHttpClient();

HttpGet get = new HttpGet(

"http://api.fang.anjuke.com/m/android/1.3/shouye/recInfosV3/?city_id=14&lat=40.04652&lng=116.306033&api_key=androidkey&sig=9317e9634b5fbc16078ab07abb6661c5&macid=45cd2478331b184ff0e15f29aaa89e3e&app=a-ajk&_pid=11738&o=PE-TL10-user+4.4.2+HuaweiPE-TL10+CHNC00B260+ota-rel-keys%2Crelease-keys&from=mobile&m=Android-PE-TL10&cv=9.5.1&cid=14&i=864601026706713&v=4.4.2&qtime=20160411091603&pm=b61&uuid=1848c59c-185d-48d9-b0e9-782016041109&_chat_id="

+ id);

HttpResponse httpResponse = httpClient.execute(get);

int statusCode = httpResponse.getStatusLine().getStatusCode();

if (statusCode == 200) {

HttpEntity entity = httpResponse.getEntity();

rs = EntityUtils.toString(entity, "utf-8");

}

} catch (ClientProtocolException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return rs;

}

}

///

mainactivity

///

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.ListView;

import android.widget.TextView;

import com.baidu.location.BDLocation;

import com.baidu.location.BDLocationListener;

import com.baidu.location.LocationClient;

import com.baidu.location.LocationClientOption;

import com.baidu.location.LocationClientOption.LocationMode;

public class MainActivity extends Activity {

private LocationClient mLocationClient = null;

private BDLocationListener myListener = new MyLocationListener();

private TextView cityName;

private ListView listView;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mLocationClient = new LocationClient(getApplicationContext());

mLocationClient.registerLocationListener(myListener); // 注册监听函数

initLocation();

mLocationClient.start();

}

private void initLocation() {

LocationClientOption option = new LocationClientOption();

option.setLocationMode(LocationMode.Hight_Accuracy);// 可选,默认高精度,设置定位模式,高精度,低功耗,仅设备

option.setCoorType("bd09ll");// 可选,默认gcj02,设置返回的定位结果坐标系

int span = 1000;

option.setScanSpan(span);// 可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的

option.setIsNeedAddress(true);// 可选,设置是否需要地址信息,默认不需要

option.setOpenGps(true);// 可选,默认false,设置是否使用gps

option.setLocationNotify(true);// 可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果

option.setIsNeedLocationDescribe(true);// 可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”

option.setIsNeedLocationPoiList(true);// 可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到

option.setIgnoreKillProcess(false);// 可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死

option.SetIgnoreCacheException(false);// 可选,默认false,设置是否收集CRASH信息,默认收集

option.setEnableSimulateGps(false);// 可选,默认false,设置是否需要过滤gps仿真结果,默认需要

mLocationClient.setLocOption(option);

cityName = (TextView) findViewById(R.id.cityName);

listView = (ListView) findViewById(R.id.listView);

MyBaseAdapter1 adapter1 = new MyBaseAdapter1(getApplicationContext());

// 设置适配器

listView.setAdapter(adapter1);

cityName.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// 跳转到房源列表

startActivity(new Intent(MainActivity.this, InfoActivity.class));

}

});

listView.setOnItemClickListener(new OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,

long arg3) {

// 跳转到房源列表

startActivity(new Intent(MainActivity.this, InfoActivity.class));

}

});

}

// 实现BDLocationListener

public class MyLocationListener implements BDLocationListener {

@Override

public void onReceiveLocation(BDLocation location) {

// 展示定位城市

cityName.setText(location.getCity());

}

}

}

//////////////

infoactivity

/////////////////////////

import java.util.List;

import android.app.Activity;

import android.content.Context;

import android.os.Bundle;

import android.os.Handler;

import android.widget.ListView;

import com.example.yuekao_last.bean.MyResult;

import com.example.yuekao_last.bean.Rows;

import com.example.yuekao_last.utils.NewWorkUtils;

import com.google.gson.Gson;

import com.handmark.pulltorefresh.library.PullToRefreshBase;

import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode;

import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener2;

import com.handmark.pulltorefresh.library.PullToRefreshListView;

public class InfoActivity extends Activity {

private List<Rows> rows;

int p = 1;

private MyBaseAdapter myBaseAdapter;

Handler handler = new Handler() {

public void handleMessage(android.os.Message msg) {

switch (msg.what) {

case 1:

rows = (List<Rows>) msg.obj;

myBaseAdapter = new MyBaseAdapter(context, rows);

pulltorefresh.setAdapter(myBaseAdapter);

break;

case 2:

List<Rows> rows2 = (List<Rows>) msg.obj;

rows.addAll(0, rows2);

myBaseAdapter.notifyDataSetChanged();

pulltorefresh.onRefreshComplete();

break;

case 3:

List<Rows> rows3 = (List<Rows>) msg.obj;

rows.addAll(rows3);

myBaseAdapter.notifyDataSetChanged();

pulltorefresh.onRefreshComplete();

break;

default:

break;

}

};

};

private PullToRefreshListView pulltorefresh;

private Context context;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_info);

context = getApplicationContext();

init();

}

private void init() {

// TODO Auto-generated method stub

pulltorefresh = (PullToRefreshListView) findViewById(R.id.pulltorefresh);

pulltorefresh.setMode(Mode.BOTH);

myData(1, 0);

pulltorefresh.setOnRefreshListener(new OnRefreshListener2<ListView>() {

@Override

public void onPullDownToRefresh(

PullToRefreshBase<ListView> refreshView) {

myData(2, 0);

}

@Override

public void onPullUpToRefresh(

PullToRefreshBase<ListView> refreshView) {

myData(3, p++);

}

});

}

private void myData(final int what, final int id) {

new Thread() {

public void run() {

String data = NewWorkUtils.getData(id);

Gson gson = new Gson();

MyResult myResult = gson.fromJson(data, MyResult.class);

List<Rows> rows = myResult.getResult().getRows();

handler.sendMessage(handler.obtainMessage(what, rows));

};

}.start();

}

}

/////////////////////////////////

清单文件配置

/////////////////////////

<!-- 这个权限用于进行网络定位 -->

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" >

</uses-permission>

<!-- 这个权限用于访问GPS定位 -->

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" >

</uses-permission>

<!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 -->

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" >

</uses-permission>

<!-- 获取运营商信息,用于支持提供运营商信息相关的接口 -->

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >

</uses-permission>

<!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位 -->

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" >

</uses-permission>

<!-- 用于读取手机当前的状态 -->

<uses-permission android:name="android.permission.READ_PHONE_STATE" >

</uses-permission>

<!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据 -->

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >

</uses-permission>

<!-- 访问网络,网络定位需要上网 -->

<uses-permission android:name="android.permission.INTERNET" />

<!-- SD卡读取权限,用户写入离线定位数据 -->

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" >

</uses-permission>

<meta-data

android:name="com.baidu.lbsapi.API_KEY"

android:value="dFWiYuwGO23O1O1wxkqLW4wjiUuTBEX0" />

<service

android:name="com.baidu.location.f"

android:enabled="true"

android:process=":remote" >

</service>

////////////////////

imageLoader的简单加入

/////////////////////

import java.io.File;

import android.app.Application;

import android.graphics.Bitmap.Config;

import android.os.Environment;

import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache;

import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;

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.ImageScaleType;

import com.nostra13.universalimageloader.core.assist.QueueProcessingType;

import com.nostra13.universalimageloader.core.decode.BaseImageDecoder;

import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer;

import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;

import com.nostra13.universalimageloader.core.download.BaseImageDownloader;

public class MyApplication extends Application{

@Override

public void onCreate() {

// TODO Auto-generated method stub

super.onCreate();

//sdcard的路径

String sdPath=Environment.getExternalStorageDirectory().getPath();

//自定义的方式

ImageLoaderConfiguration configuration=new ImageLoaderConfiguration.Builder(this)

.memoryCacheExtraOptions(480, 800)//内存缓存文件的最大长宽

.discCacheExtraOptions(480, 800, null)//本地缓存的详细信息

.threadPoolSize(3)//线程池内加载的数量

.threadPriority(Thread.NORM_PRIORITY-2)//设置当前线程的优先级

.tasksProcessingOrder(QueueProcessingType.FIFO)//设置任务的处理顺序

.denyCacheImageMultipleSizesInMemory()//防止内存中图片重复

.memoryCache(new LruMemoryCache(2*1024*1024))//设置自己的内存缓存大小 2M

.memoryCacheSize(2*1024*1024)

.memoryCacheSizePercentage(13)//内存缓存百分比

.discCache(new UnlimitedDiscCache(new File(sdPath+"/huang/image1")))//设置缓存的图片在sdcard中的位置

.discCacheSize(50*1024*1024)//硬盘缓存大小 50M

.discCacheFileCount(100)//硬盘缓存文件个数

.discCacheFileNameGenerator(new Md5FileNameGenerator())//md5加密的方式,或new HashCodeFileNameGenerator()

.imageDownloader(new BaseImageDownloader(this))

.imageDecoder(new BaseImageDecoder(true))//图片解码

.defaultDisplayImageOptions(getOption())//是否使用默认的图片加载配置,null表示不使用

.writeDebugLogs()

.build();

//初始化

ImageLoader.getInstance().init(configuration);

}

/*

* 设置option

*/

public static DisplayImageOptions getOption(){

DisplayImageOptions option=new DisplayImageOptions.Builder()

.showImageOnLoading(R.drawable.ic_launcher)//设置图片下载期间显示的图片

.resetViewBeforeLoading(false)//设置图片在加载前是否重置、复位

//.delayBeforeLoading(1000)//下载前的延迟时间

.cacheInMemory(true)//设置下载的图片是否缓存在内存中

.cacheOnDisk(true)//设置下载的图片是否缓存在sd卡中

.considerExifParams(false)//思考可交换的参数

.imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2)//设置图片的显示比例

.bitmapConfig(Config.RGB_565)//设置图片的解码类型

.displayer(new RoundedBitmapDisplayer(40))//设置图片的圆角半径

.displayer(new FadeInBitmapDisplayer(3000))//设置图片显示的透明度过程的时间

.build();

return option;

}

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