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

技术篇-android ListView网络图片下载文件缓存

2015-10-09 16:25 661 查看
第一步:编写文件缓存的相关方法,关于Software缓存类在网上可以搜索到相关的资料(文件缓存工具类)

public class AsyncImageLoader {

// SoftReference是软引用,是为了更好的为了系统回收变量

private HashMap<String, SoftReference<Bitmap>> imageCache;

public AsyncImageLoader() {

imageCache = new HashMap<String, SoftReference<Bitmap>>();

}

// 第一种方法

// public Bitmap loadBitmap(final ImageView imageView, final String

// imageURL, final ImageCallBack imageCallBack)

// {

// //在内存缓存中,则返回Bitmap对象

// if(imageCache.containsKey(imageURL))

// {

// SoftReference<Bitmap> reference = imageCache.get(imageURL);

// Bitmap bitmap = reference.get();

// if(bitmap != null)

// {

// return bitmap;

// }

// }

// else

// {

// /**

// * 加上一个对本地缓存的查找

// */

// //截取上传的文件名称

// String bitmapName = imageURL.substring(imageURL.lastIndexOf("/") + 1);

// //文件的存放地址

// File cacheDir = new File("/mnt/sdcard/test/");

// // if(!cacheDir.exists()){

// // cacheDir.mkdirs();

// // }

// //文件数组

// File[] cacheFiles =cacheDir.listFiles();

// if(cacheFiles!=null){

// int i = 0;

// //判定文件数组是否包含存在的图片文件

// for(; i<cacheFiles.length; i++)

// {

// if(bitmapName.equals(cacheFiles[i].getName()))

// {

// break;

// }

// }

// //如果在文件数组中存在相关的图片资源(读取图片)

// if(i < cacheFiles.length)

// {

// return BitmapFactory.decodeFile("/mnt/sdcard/test/" + bitmapName);

// }

// }

//

// }

// //启动主线程(实时的界面更新工作)

// final Handler handler = new Handler()

// {

// /* (non-Javadoc)

// * @see android.os.Handler#handleMessage(android.os.Message)

// */

// @Override

// public void handleMessage(Message msg)

// {

// // TODO Auto-generated method stub

// imageCallBack.imageLoad(imageView, (Bitmap)msg.obj,imageURL);

// }

// };

//

// //如果不在内存缓存中,也不在本地(被jvm回收掉),则开启线程下载图片

// new Thread()

// {

// /* (non-Javadoc)

// * @see java.lang.Thread#run()

// */

// @Override

// public void run()

// {

// // TODO Auto-generated method stub

// InputStream bitmapIs;

//

// bitmapIs = ImageUtil.getRequest(imageURL);

// Bitmap bitmap = BitmapFactory.decodeStream(bitmapIs);

// //添加下载资源的(软应用)

// imageCache.put(imageURL, new SoftReference<Bitmap>(bitmap));

// Message msg = handler.obtainMessage(0, bitmap);

// handler.sendMessage(msg);

//

// //创建文件保存下载的图片

// File dir = new File("/mnt/sdcard/test/");

// if(!dir.exists())

// {

// dir.mkdirs();

// }

// //文件的命名规范

// File bitmapFile = new File("/mnt/sdcard/test/" +

// imageURL.substring(imageURL.lastIndexOf("/") + 1));

//

// if(!bitmapFile.exists())

// {

// try

// {

// bitmapFile.createNewFile();

// }

// catch (IOException e)

// {

// // TODO Auto-generated catch block

// e.printStackTrace();

// }

// }

// // BufferedOutputStream bos = new BufferedOutputStream(new

// FileOutputStream(bitmapFile));

// //bitmap.compress(Bitmap.CompressFormat.JPEG, 80, bos);

// // bos.flush();

// // bos.close();

//

//

// FileOutputStream fos;

// try

// {

// fos = new FileOutputStream(bitmapFile);

// bitmap.compress(Bitmap.CompressFormat.JPEG,

// 100, fos);

// fos.close();

// }

// catch (FileNotFoundException e)

// {

// // TODO Auto-generated catch block

// e.printStackTrace();

// }

// catch (IOException e)

// {

// // TODO Auto-generated catch block

// e.printStackTrace();

// }

// }

//

// }.start();

//

// return null;

// }

// /**

// * 回调接口

// * @author onerain

// *

// */

// public interface ImageCallBack

// {

// public void imageLoad(ImageView imageView, Bitmap bitmap,String target);

// }

// 第二种方法

// 异步加载图片。

public Bitmap loadDrawable(final ImageView imageView,

final String imageUrl, final ImageCallback imageCallback) {

// 判断软引用是否存在这张图片的路劲,如果有的话,则直接返回软引用中的图片,进行返回。

// if (imageCache.containsKey(imageUrl)) {

//

// SoftReference<Bitmap> softReference = imageCache.get(imageUrl);

//

// Bitmap drawable = softReference.get();

//

// if (drawable != null) {

//

// return drawable;

//

// }

//

// }if {

// 添加文件存储缓存(判断下载的图片是否存在图片)

// 截取上传的文件名称

String drawableName = imageUrl.substring(imageUrl.lastIndexOf("/") + 1);

// SD卡创建legouimages文件夹

File Dir = Environment.getExternalStorageDirectory();

String path = Dir.getPath() + "/legouimages";

File CardDir = new File(path);

if (!CardDir.exists()) {

CardDir.mkdirs();

}

// 遍历文件中的图片资源

File[] cacheFiles = CardDir.listFiles();

int i = 0;

for (; i < cacheFiles.length; i++) {

// String str=cacheFiles[i].getPath();

if (drawableName.equals(cacheFiles[i].getName())) {

return BitmapFactory.decodeFile(cacheFiles[i].getPath());

}

}

// if (i < cacheFiles.length) {

//

// }

// }

// 线程下载图片资源的回调

final Handler handler = new Handler() {

public void handleMessage(Message message) {

// 完成后,进行回调,参数1:返回的图片Drawable对象,参数2:图片的服务器路劲(imageView的TAG标识。)

imageCallback.imageLoaded((Bitmap) message.obj);

}

};

// 如果图片在软引用中不存在,则启动子线程进行图片下载。

new Thread() {

@Override

public void run() {

InputStream bitmapIs = getStreamFromURL(imageUrl);

Bitmap bitmap = BitmapFactory.decodeStream(bitmapIs);

// Drawable drawable = loadImageFromUrl(imageUrl);

imageCache.put(imageUrl, new SoftReference<Bitmap>(bitmap));

Message message = handler.obtainMessage(0, bitmap);

handler.sendMessage(message);

File d = Environment.getExternalStorageDirectory();

String p = d.getPath() + "/legouimages";

File dir = new File(p);

// if (!dir.exists()) {

// dir.mkdirs();

// }

File bitmapFile = new File(p + "/"

+ imageUrl.substring(imageUrl.lastIndexOf("/") + 1));

if (!bitmapFile.exists()) {

try {

bitmapFile.createNewFile();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

FileOutputStream fos;

try {

fos = new FileOutputStream(bitmapFile);

bitmap.compress(Bitmap.CompressFormat.JPEG, 80, fos);

fos.close();

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}.start();

return null;

}

// 图片下载

public static InputStream getStreamFromURL(String url) {

URL m;

InputStream i = null;

try {

// 图片访问地址

m = new URL(url);

// 获取图片的字节流。

i = m.openStream();

} catch (MalformedURLException e1) {

e1.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

return i;

}

// 当图片线程下载成功后,将调用该函数在getView方法中,进行回调,更新到ListView中的imageView。

public interface ImageCallback {

public void imageLoaded(Bitmap bitmap);

}

}

第二步:ListView图片下载与展示:

public class JinRilgActivity extends Activity {

// 屏幕的width

private int mScreenWidth;

// 屏幕的height

private int mScreenHeight;

// PopupWindow的width

private int mPopupWindowWidth;

// PopupWindow的height

private int mPopupWindowHeight;

// 分类的linearlayout

LinearLayout jinrilg_fenlei_lin;

// 菜单项item的linearLayout。

LinearLayout jinrilg_menu_msfl_lin;

LinearLayout jinrilg_menu_ssgw_lin;

LinearLayout jinrilg_menu_fzxb_lin;

LinearLayout jinrilg_menu_shjj_lin;

LinearLayout jinrilg_menu_qt_lin;

// 用于保存当前所在菜单的位置

static int MENU_INDEX = 0;

PopupWindow mPopupWindow;

// 相关工具类和数据源

List<JinriLg> lists = new ArrayList<JinriLg>();

// 美食天下数据

List<JinriLg> lists1 = new ArrayList<JinriLg>();

private AsyncImageLoader imageloader;

// 相关组件

private ListView listview;

// 创建进度对话框

private ProgressDialog processdialog;

// 创建进度对话框(美食天下)

private ProgressDialog processdialog1;

public void params() {

// 四个文本框组件(相关组件)

final TextView wdlg = (TextView) findViewById(R.id.jydg);

wdlg.setBackgroundResource(R.drawable.bj1);

// 今日乐购按钮

LinearLayout jirianniu = (LinearLayout) findViewById(R.id.jinrilegou);

jirianniu.setBackgroundResource(R.drawable.bj1);

jirianniu.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

}

});

// 我的乐购

LinearLayout wodelegou = (LinearLayout) findViewById(R.id.wodelegou);

wodelegou.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

Intent intent = new Intent(JinRilgActivity.this, MyLegou.class);

startActivity(intent);

JinRilgActivity.this.finish();

}

});

// 导购

LinearLayout daogou = (LinearLayout) findViewById(R.id.daogou);

daogou.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

Intent intent = new Intent(JinRilgActivity.this,

DaogouActivity.class);

startActivity(intent);

JinRilgActivity.this.finish();

}

});

// 更多

LinearLayout gengduo = (LinearLayout) findViewById(R.id.gengduo);

gengduo.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

Intent intent = new Intent(JinRilgActivity.this,

GengduoActivity.class);

startActivity(intent);

JinRilgActivity.this.finish();

}

});

}

// 主线程

private Handler handler = new Handler() {

@Override

public void handleMessage(Message msg) {

// TODO Auto-generated method stub

// 解析相关信息

switch (msg.what) {

case 0:

Bundle bundle = msg.getData();

String json = bundle.getString("json");

findJinRiLeGou(json);

break;

// 美食天下

case 1:

Bundle b1 = msg.getData();

String j1 = b1.getString("json");

findJinRiLeGou1(j1);

break;

}

}

};

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); // 自定义窗口标题的样式 注意顺序

setContentView(R.layout.main);

JinRilgActivity.this.getWindow().setFeatureInt(

Window.FEATURE_CUSTOM_TITLE, R.layout.mainmenutitle);// 注意顺序

// 添加今日乐购Activity

ApplicationBase.getinstace().addActivity(JinRilgActivity.this);

// 对话框实例化

processdialog = new ProgressDialog(JinRilgActivity.this);

processdialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);

processdialog.setMessage("图片资源加载当中...");

processdialog.setIndeterminate(false);

processdialog.setCancelable(true);

processdialog.setButton("取消", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface arg0, int arg1) {

processdialog.dismiss();

}

});

processdialog.show();

// 相关工具类(实例化)

imageloader = new AsyncImageLoader();

initParmas();

// 组件的相关初始化方法

init();

// 自定义标题栏的监听事件

params();

// ListView 设置监听事件

listview.setOnItemClickListener(new OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> adapter, View view,

int position, long arg3) {

// 跳转到商品详情界面(相关参数的传递)

Intent intent = new Intent(JinRilgActivity.this,

ShanpinxqActivity.class);

Bundle extras = new Bundle();

JinriLg jinrilg = lists.get(position);

extras.putSerializable("jinrilegou", jinrilg);

intent.putExtras(extras);

startActivity(intent);

}

});

}

/**

* 用于请求查询数据。这里是静态的, 必须通过线程访问后台服务进行查询, 并在消息队列中进行处理显示以及加载数据到ListView

*/

public void findJinRiLeGou(String json) {

try {

JSONArray jsonarray = new JSONArray(json);

if (jsonarray.length() > 0) {

// 相关信息的循环遍历

for (int i = 0; i < jsonarray.length(); i++) {

JSONObject object = jsonarray.getJSONObject(i);

// 商品编号

String daogou_bh = object.getString("goodId");

// 商品标题

String daogou_spbt = object.getString("goodName");

// 商品原价格

double daogou_spjg = object.getDouble("price");

// 商品折扣

double daogou_spzk = object.getDouble("discount");

// 商品购买人数

int daogou_gmrs = object.getInt("persons");

// 商品优惠时间

String daogou_yhsj = object.getString("endtime");

// 商品图片路径

String daogou_tpsp = object.getString("imgpath");

// 商品现在价格

double daogou_xzjg = object.getDouble("newprice");

// 商品介绍

String daogou_spjs = object.getString("intro");

// 商家信息(待检查)

// String daogou_sjxx=object.getString("");

// 相关信息的存储工作

JinriLg jinrilg = new JinriLg();

// 商品购买人数

jinrilg.setNumber(daogou_gmrs);

// 商品名称

jinrilg.setCommodity(daogou_spbt);

// 商品销售时间

jinrilg.setTime(daogou_yhsj);

// 商品原价格

jinrilg.setProduct_list(daogou_spjg);

// 商品折扣

jinrilg.setMerchandise_discounts(daogou_spzk);

// 商品现价

jinrilg.setNow_price(daogou_xzjg);

// 商品图片

jinrilg.setImageurl(Settings.service_path

+ Settings.file_path + daogou_tpsp);

// 商品介绍

jinrilg.setIntroduction(daogou_spjs);

// 添加商品编号

jinrilg.setBianhao(daogou_bh);

// 相关数据信息添加

lists.add(jinrilg);

}

} else {

// 相关提示

Toast.makeText(JinRilgActivity.this, "温馨提示:无商品信息...",

Toast.LENGTH_LONG).show();

return;

}

// 相关组件的初始化工作

MyAdapter adapter = new MyAdapter(lists, imageloader,

JinRilgActivity.this);

listview.setAdapter(adapter);

// 关闭进度对话框

processdialog.cancel();

} catch (JSONException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

/*

* 初始化工作

*/

public void initParmas() {

// 点击分类按钮触发事件

jinrilg_fenlei_lin = (LinearLayout) findViewById(R.id.jinrilg_fenlei);

jinrilg_fenlei_lin.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

if (mPopupWindow == null) {

// 获得实例化PopupWindow对象

getPopupWindowInstance();

// 显示Window,在提供的组件下方显示,并设置X,和Y的偏移。

mPopupWindow.showAsDropDown(v, 0, -80);

}

}

});

}

// 组件初始化的相关方法

public void init() {

// ListView组件初始化

listview = (ListView) findViewById(R.id.list);

final JinRilg lg = new JinRilg();

new Thread() {

@Override

public void run() {

handler.postDelayed(lg, 1000);

}

}.start();

}

public class ViewHolder {

// 修改的相关代码

private View baseView;

private TextView title_textview; // 标题

private TextView jianjie_textview;// 简介

private TextView xianjia_textview;// 现价

private TextView yuanjia_textview;// 原价

private TextView zhekou_textview;// 折扣

private TextView renshu_textview;// 人数

private TextView shijian_textview;// 时间

private ImageView tupian_imageview;// 图片

// 修改相关代码

public ViewHolder(View baseView) {

super();

this.baseView = baseView;

}

public TextView get_title_textview() {

title_textview = (TextView) baseView

.findViewById(R.id.jinrilg_shangpinbt);

return title_textview;

}

public TextView get_jianjie_textview() {

jianjie_textview = (TextView) baseView

.findViewById(R.id.jinrilg_shangpinjs);

return jianjie_textview;

}

public TextView get_xianjia_textview() {

xianjia_textview = (TextView) baseView

.findViewById(R.id.jinrilg_xianjia);

return xianjia_textview;

}

public TextView get_yuanjia_textview() {

yuanjia_textview = (TextView) baseView

.findViewById(R.id.jinrilg_yuanjia);

return yuanjia_textview;

}

public TextView get_zhekou_textview() {

zhekou_textview = (TextView) baseView

.findViewById(R.id.jinrilg_zhekou);

return zhekou_textview;

}

public TextView get_renshu_textview() {

renshu_textview = (TextView) baseView

.findViewById(R.id.jinrilg_goumairs);

return renshu_textview;

}

public TextView get_shijian_textview() {

shijian_textview = (TextView) baseView

.findViewById(R.id.jinrilg_youxiaosj);

return shijian_textview;

}

public ImageView get_tupian_imageview() {

tupian_imageview = (ImageView) baseView

.findViewById(R.id.jinrilg_shangpintp);

return tupian_imageview;

}

}

class MyAdapter extends BaseAdapter {

private LayoutInflater inflater;

private List<JinriLg> lists;

private AsyncImageLoader imageloader;

private Context context;

public MyAdapter(List<JinriLg> lists, AsyncImageLoader imageloader,

Context context) {

super();

this.lists = lists;

this.imageloader = imageloader;

this.context = context;

}

@Override

public int getCount() {

// TODO Auto-generated method stub

return lists.size();

}

@Override

public Object getItem(int position) {

// TODO Auto-generated method stub

return lists.get(position);

}

@Override

public long getItemId(int position) {

// TODO Auto-generated method stub

return 0;

}

@Override

public View getView(final int position, View convertView,

ViewGroup parent) {

final ViewHolder holder;

if (convertView == null) {

LayoutInflater inflater = LayoutInflater.from(context);

convertView = inflater.inflate(R.layout.jinrilg_textview, null);

holder = new ViewHolder(convertView);

// 设置标识

convertView.setTag(holder);

} else {

holder = (ViewHolder) convertView.getTag();

}

// 代码注销(第一种方法)

// //new ViewHolder();

// holder.renshu_textview =

// (TextView)convertView.findViewById(R.id.jinrilg_goumairs);

// holder.title_textview =

// (TextView)convertView.findViewById(R.id.jinrilg_shangpinbt);

// holder.jianjie_textview =

// (TextView)convertView.findViewById(R.id.jinrilg_shangpinjs);

// holder.xianjia_textview =

// (TextView)convertView.findViewById(R.id.jinrilg_xianjia);

// holder.shijian_textview =

// (TextView)convertView.findViewById(R.id.jinrilg_youxiaosj);

// holder.yuanjia_textview =

// (TextView)convertView.findViewById(R.id.jinrilg_yuanjia);

// holder.zhekou_textview =

// (TextView)convertView.findViewById(R.id.jinrilg_zhekou);

// holder.zhekou_textview =

// (TextView)convertView.findViewById(R.id.jinrilg_zhekou);

//

// holder.tupian_imageview =

// (ImageView)convertView.findViewById(R.id.jinrilg_shangpintp);

// 商品名称

holder.get_title_textview().setText(

lists.get(position).getCommodity());

// holder.title_textview.setText(lists.get(position).getCommodity());

// 商品介绍

holder.get_jianjie_textview().setText(

lists.get(position).getIntroduction());

// holder.jianjie_textview.setText(lists.get(position).getIntroduction());

// 商品现价

holder.get_xianjia_textview().setText(

"¥" + lists.get(position).getNow_price() + "/");

// holder.xianjia_textview.setText("¥"+lists.get(position).getNow_price()+"/");

// 商品销售时间

holder.get_shijian_textview()

.setText(lists.get(position).getTime());

// holder.shijian_textview.setText(lists.get(position).getTime());

// holder.yuanjia_textview.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);

// 商品原价

holder.get_yuanjia_textview().setText(

"¥" + lists.get(position).getProduct_list() + "");

// holder.yuanjia_textview.setText("¥"+lists.get(position).getProduct_list()+"");

// 商品折扣

holder.get_zhekou_textview().setText(

"(" + lists.get(position).getMerchandise_discounts() * 10.0

+ "折)");

// holder.zhekou_textview.setText("("+lists.get(position).getMerchandise_discounts()*10+"折)");

// 商品购买人数

holder.get_renshu_textview().setText(

"" + lists.get(position).getNumber());

// holder.renshu_textview.setText(""+lists.get(position).getNumber());

// 相关图片加载(图片设置标记)

String target = lists.get(position).getImageurl();

final String str = target.substring(target.lastIndexOf("/") + 1);

// 获得组件

final ImageView imageviews = holder.get_tupian_imageview();

// 将图片组件设置服务器图片路劲的标识(解决图片乱加载的现象)

imageviews.setTag(str);

// 异步加载图片

Bitmap drawable = imageloader.loadDrawable(imageviews, target,

new ImageCallback() {

@Override

// //成功后进行回调,处理UI。参数1:返回请求的图片资源,参数2:图片服务器路劲(起组件标识作用)

// public void imageLoaded(

// Drawable imageDrawable,

// String imageUrl) {

// //根据图片的网络地址做为标识,来查询相应item中的imageView,主要起到一个引用作用。

// ImageView i=(ImageView)

// imageview.findViewWithTag(imageUrl);

// //如果找到对应的ImageView,那就加载相关图片资源。

// if(i!=null){

// //如果加载的图片存在,那么就将图片引用到ImageView,否则引用默认图片。

// if(imageDrawable!=null){

// i.setImageDrawable(imageDrawable);

// }

// else{

// i.setImageResource(R.drawable.bj3);

// }

// }

// }

public void imageLoaded(Bitmap bitmap) {

// TODO Auto-generated method stub

// imageView.setImageBitmap(bitmap);

// if(target!=null){

// imageView=holder.get_tupian_imageview();

// 获得标记的ImageView

ImageView imageView = (ImageView) imageviews

.findViewWithTag(str);

// if(bitmap==null){

// imageView.setImageResource(R.drawable.bj3);

// }else{

// imageView.setImageBitmap(bitmap);

// }

// 判断imageView 是否实例化

if (imageView == null) {

return;

} else {

imageView.setImageBitmap(bitmap);

}

}

});

// 当线程还在访问图片时,先暂时用默认图片来代替。

if (drawable == null) {

imageviews.setImageResource(R.drawable.bj3);

}

// 否则返回软引用中的图片。

else {

imageviews.setImageBitmap(drawable);

}

// //Item跳转

// convertView.setOnClickListener(new OnClickListener(){

// @Override

// public void onClick(View v) {

// //跳转到商品详情界面(相关参数的传递)

// Intent intent=new

// Intent(JinRilgActivity.this,ShanpinxqActivity.class);

//

// startActivity(intent);

// JinRilgActivity.this.finish();

// }

// });

return convertView;

}

}

// 实例化窗口方法

public void getPopupWindowInstance() {

LayoutInflater layoutInflater = LayoutInflater.from(this);

// 获取分类菜单的组件

View popupWindow = layoutInflater.inflate(R.layout.fenlei_menu, null);

jinrilg_menu_msfl_lin = (LinearLayout) popupWindow

.findViewById(R.id.jinrilg_menu_msfl_lin);

jinrilg_menu_ssgw_lin = (LinearLayout) popupWindow

.findViewById(R.id.jinrilg_menu_ssgw_lin);

jinrilg_menu_fzxb_lin = (LinearLayout) popupWindow

.findViewById(R.id.jinrilg_menu_fzxb_lin);

jinrilg_menu_shjj_lin = (LinearLayout) popupWindow

.findViewById(R.id.jinrilg_menu_shjj_lin);

jinrilg_menu_qt_lin = (LinearLayout) popupWindow

.findViewById(R.id.jinrilg_menu_qt_lin);

// 控制点击的显示和隐藏

jinrilg_menu_msfl_lin.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// 记录上一次选中的菜单的标识位

MENU_INDEX = 1;

// 设置点击背景

processdialog1 = new ProgressDialog(JinRilgActivity.this);

processdialog1.setProgressStyle(ProgressDialog.STYLE_SPINNER);

processdialog1.setMessage("图片资源加载当中...");

processdialog1.setIndeterminate(false);

processdialog1.setCancelable(false);

processdialog1.setButton("取消",

new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface arg0, int arg1) {

processdialog1.dismiss();

// JinRilgActivity.this.finish();

}

});

processdialog1.show();

final JinRilg1 lg1 = new JinRilg1("1");

new Thread() {

@Override

public void run() {

handler.postDelayed(lg1, 1000);

}

}.start();

jinrilg_menu_msfl_lin

.setBackgroundResource(R.drawable.jinrilg_fenlei_menu);

jinrilg_menu_ssgw_lin.setBackgroundDrawable(null);

jinrilg_menu_fzxb_lin.setBackgroundDrawable(null);

jinrilg_menu_shjj_lin.setBackgroundDrawable(null);

jinrilg_menu_qt_lin.setBackgroundDrawable(null);

// //添加相关线程

// //对话框实例化

// processdialog1 = new ProgressDialog(JinRilgActivity.this);

// processdialog1.setProgressStyle(ProgressDialog.STYLE_SPINNER);

// processdialog1.setMessage("图片资源加载当中...");

// processdialog1.setIndeterminate(false);

// processdialog1.setCancelable(true);

// processdialog1.setButton("取消", new

// DialogInterface.OnClickListener(){

//

// @Override

// public void onClick(DialogInterface arg0, int arg1) {

// processdialog1.dismiss();

// JinRilgActivity.this.finish();

//

// }

//

// });

// processdialog1.show();

// final JinRilg1 lg1=new JinRilg1();

// new Thread(){

// @Override

// public void run() {

// handler.postDelayed(lg1, 1000);

// }

// }.start();

}

});

jinrilg_menu_ssgw_lin.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

MENU_INDEX = 2;

// 设置点击背景

processdialog1 = new ProgressDialog(JinRilgActivity.this);

processdialog1.setProgressStyle(ProgressDialog.STYLE_SPINNER);

processdialog1.setMessage("图片资源加载当中...");

processdialog1.setIndeterminate(false);

processdialog1.setCancelable(false);

processdialog1.setButton("取消",

new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface arg0, int arg1) {

processdialog1.dismiss();

// JinRilgActivity.this.finish();

}

});

processdialog1.show();

final JinRilg1 lg2 = new JinRilg1("2");

new Thread() {

@Override

public void run() {

handler.postDelayed(lg2, 1000);

}

}.start();

jinrilg_menu_ssgw_lin

.setBackgroundResource(R.drawable.jinrilg_fenlei_menu);

jinrilg_menu_msfl_lin.setBackgroundDrawable(null);

jinrilg_menu_fzxb_lin.setBackgroundDrawable(null);

jinrilg_menu_shjj_lin.setBackgroundDrawable(null);

jinrilg_menu_qt_lin.setBackgroundDrawable(null);

}

});

jinrilg_menu_fzxb_lin.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

MENU_INDEX = 3;

processdialog1 = new ProgressDialog(JinRilgActivity.this);

processdialog1.setProgressStyle(ProgressDialog.STYLE_SPINNER);

processdialog1.setMessage("图片资源加载当中...");

processdialog1.setIndeterminate(false);

processdialog1.setCancelable(false);

processdialog1.setButton("取消",

new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface arg0, int arg1) {

processdialog1.dismiss();

// JinRilgActivity.this.finish();

}

});

processdialog1.show();

final JinRilg1 lg3 = new JinRilg1("3");

new Thread() {

@Override

public void run() {

handler.postDelayed(lg3, 1000);

}

}.start();

jinrilg_menu_fzxb_lin

.setBackgroundResource(R.drawable.jinrilg_fenlei_menu);

jinrilg_menu_msfl_lin.setBackgroundDrawable(null);

jinrilg_menu_ssgw_lin.setBackgroundDrawable(null);

jinrilg_menu_shjj_lin.setBackgroundDrawable(null);

jinrilg_menu_qt_lin.setBackgroundDrawable(null);

}

});

jinrilg_menu_shjj_lin.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

MENU_INDEX = 4;

processdialog1 = new ProgressDialog(JinRilgActivity.this);

processdialog1.setProgressStyle(ProgressDialog.STYLE_SPINNER);

processdialog1.setMessage("图片资源加载当中...");

processdialog1.setIndeterminate(false);

processdialog1.setCancelable(false);

processdialog1.setButton("取消",

new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface arg0, int arg1) {

processdialog1.dismiss();

// JinRilgActivity.this.finish();

}

});

processdialog1.show();

final JinRilg1 lg4 = new JinRilg1("6");

new Thread() {

@Override

public void run() {

handler.postDelayed(lg4, 1000);

}

}.start();

jinrilg_menu_shjj_lin

.setBackgroundResource(R.drawable.jinrilg_fenlei_menu);

jinrilg_menu_msfl_lin.setBackgroundDrawable(null);

jinrilg_menu_ssgw_lin.setBackgroundDrawable(null);

jinrilg_menu_fzxb_lin.setBackgroundDrawable(null);

jinrilg_menu_qt_lin.setBackgroundDrawable(null);

}

});

jinrilg_menu_qt_lin.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

MENU_INDEX = 5;

processdialog1 = new ProgressDialog(JinRilgActivity.this);

processdialog1.setProgressStyle(ProgressDialog.STYLE_SPINNER);

processdialog1.setMessage("图片资源加载当中...");

processdialog1.setIndeterminate(false);

processdialog1.setCancelable(false);

processdialog1.setButton("取消",

new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface arg0, int arg1) {

processdialog1.dismiss();

// JinRilgActivity.this.finish();

}

});

processdialog1.show();

final JinRilg1 lg5 = new JinRilg1("0");

new Thread() {

@Override

public void run() {

handler.postDelayed(lg5, 1000);

}

}.start();

jinrilg_menu_qt_lin

.setBackgroundResource(R.drawable.jinrilg_fenlei_menu);

jinrilg_menu_msfl_lin.setBackgroundDrawable(null);

jinrilg_menu_ssgw_lin.setBackgroundDrawable(null);

jinrilg_menu_fzxb_lin.setBackgroundDrawable(null);

jinrilg_menu_shjj_lin.setBackgroundDrawable(null);

}

});

// 点击整个Window触发的事件

popupWindow.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

}

});

// 默认分类菜单没有选中的,点击第一次后,会自动记录点击位,在第二次再点击的时候,会显示上次点的。

switch (MENU_INDEX) {

case 1:

jinrilg_menu_msfl_lin

.setBackgroundResource(R.drawable.jinrilg_fenlei_menu);

break;

case 2:

jinrilg_menu_ssgw_lin

.setBackgroundResource(R.drawable.jinrilg_fenlei_menu);

break;

case 3:

jinrilg_menu_fzxb_lin

.setBackgroundResource(R.drawable.jinrilg_fenlei_menu);

break;

case 4:

// 设置点击背景

jinrilg_menu_shjj_lin

.setBackgroundResource(R.drawable.jinrilg_fenlei_menu);

break;

case 5:

jinrilg_menu_qt_lin

.setBackgroundResource(R.drawable.jinrilg_fenlei_menu);

break;

default:

break;

}

// 设置背景透明度( //设置背景颜色)

popupWindow.setBackgroundColor(Color.BLACK);

popupWindow.getBackground().setAlpha(90);

popupWindow.invalidate(); // 刷新一下

mScreenWidth = getWindowManager().getDefaultDisplay().getWidth(); // 获取屏幕宽

mScreenHeight = getWindowManager().getDefaultDisplay().getHeight(); // 获取屏幕高

// 设置弹出的window的宽和高,以及显示的布局文件

mPopupWindow = new PopupWindow(popupWindow, mScreenWidth, mScreenHeight);

}

// 编写相关线程(读取相关数据)

public class JinRilg implements Runnable {

// 设置请求时间参数

final int REQUEST_TIMEOUT = 10 * 1000;// 设置请求超时10秒钟

final int SO_TIMEOUT = 10 * 1000; // 设置等待数据超时时间10秒钟

@Override

public void run() {

try {

// 请求路径(servlet)

String httpurl = Settings.path + "/allGoods";

// post请求

HttpPost post = new HttpPost(httpurl);

// 设置超时时间

BasicHttpParams httpParams = new BasicHttpParams();

HttpConnectionParams.setConnectionTimeout(httpParams,

REQUEST_TIMEOUT);

HttpConnectionParams.setSoTimeout(httpParams, SO_TIMEOUT);

// 设置请求实体

HttpClient httpclient = new DefaultHttpClient(httpParams);

// 设置响应实体

HttpResponse httpresponse = httpclient.execute(post);

// 判断状态码(200)

if (httpresponse.getStatusLine().getStatusCode() == 200) {

// 查询结果(json格式数据)

String json = EntityUtils

.toString(httpresponse.getEntity());

Message message = new Message();

Bundle bundle = new Bundle();

bundle.putString("json", json);

message.setData(bundle);

message.what = 0;

handler.sendMessage(message);

} else {

// 信息提示

Toast.makeText(JinRilgActivity.this,

"温馨提示:网络连接超时,请检查网络...", Toast.LENGTH_LONG).show();

// 关闭进度对话框

processdialog.cancel();

}

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (ClientProtocolException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

// 今日乐购(商品信息的分类查询)

// 编写相关线程(读取相关数据)(分类查询)

public class JinRilg1 implements Runnable {

private String type;

public JinRilg1(String type) {

super();

this.type = type;

}

// 设置请求时间参数

final int REQUEST_TIMEOUT = 10 * 1000;// 设置请求超时10秒钟

final int SO_TIMEOUT = 10 * 1000; // 设置等待数据超时时间10秒钟

@Override

public void run() {

try {

// 请求路径(servlet)

String httpurl = Settings.path + "/allGoods";

// post请求

HttpPost post = new HttpPost(httpurl);

// 设置超时时间

BasicHttpParams httpParams = new BasicHttpParams();

HttpConnectionParams.setConnectionTimeout(httpParams,

REQUEST_TIMEOUT);

HttpConnectionParams.setSoTimeout(httpParams, SO_TIMEOUT);

// 添加相关参数

List<NameValuePair> params = new ArrayList<NameValuePair>();

params.add(new BasicNameValuePair("type", type));

// post请求设置请求的参数

post.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));

// 设置请求实体

HttpClient httpclient = new DefaultHttpClient(httpParams);

// 设置响应实体

HttpResponse httpresponse = httpclient.execute(post);

// 判断状态码(200)

if (httpresponse.getStatusLine().getStatusCode() == 200) {

// 查询结果(json格式数据)

String json = EntityUtils

.toString(httpresponse.getEntity());

Message message = new Message();

Bundle bundle = new Bundle();

bundle.putString("json", json);

message.setData(bundle);

message.what = 1;

handler.sendMessage(message);

} else {

// 信息提示

Toast.makeText(JinRilgActivity.this,

"温馨提示:网络连接超时,请检查网络...", Toast.LENGTH_LONG).show();

}

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (ClientProtocolException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

/**

* 用于请求查询数据。这里是静态的, 必须通过线程访问后台服务进行查询, 并在消息队列中进行处理显示以及加载数据到ListView

*/

public void findJinRiLeGou1(String json) {

try {

// 相关数据清除

lists1.clear();

JSONArray jsonarray = new JSONArray(json);

if (jsonarray.length() > 0) {

// 相关信息的循环遍历

for (int i = 0; i < jsonarray.length(); i++) {

JSONObject object = jsonarray.getJSONObject(i);

// 商品编号

String daogou_bh = object.getString("goodId");

// 商品标题

String daogou_spbt = object.getString("goodName");

// 商品原价格

double daogou_spjg = object.getDouble("price");

// 商品折扣

double daogou_spzk = object.getDouble("discount");

// 商品购买人数

int daogou_gmrs = object.getInt("persons");

// 商品优惠时间

String daogou_yhsj = object.getString("endtime");

// 商品图片路径

String daogou_tpsp = object.getString("imgpath");

// 商品现在价格

double daogou_xzjg = object.getDouble("newprice");

// 商品介绍

String daogou_spjs = object.getString("intro");

// 商家信息(待检查)

// String daogou_sjxx=object.getString("");

// 相关信息的存储工作

JinriLg jinrilg = new JinriLg();

// 商品购买人数

jinrilg.setNumber(daogou_gmrs);

// 商品名称

jinrilg.setCommodity(daogou_spbt);

// 商品销售时间

jinrilg.setTime(daogou_yhsj);

// 商品原价格

jinrilg.setProduct_list(daogou_spjg);

// 商品折扣

jinrilg.setMerchandise_discounts(daogou_spzk);

// 商品现价

jinrilg.setNow_price(daogou_xzjg);

// 商品图片

jinrilg.setImageurl(Settings.service_path

+ Settings.file_path + daogou_tpsp);

// 商品介绍

jinrilg.setIntroduction(daogou_spjs);

// 添加商品编号

jinrilg.setBianhao(daogou_bh);

// 相关数据信息添加

lists1.add(jinrilg);

}

} else {

// 相关提示

Toast.makeText(JinRilgActivity.this, "温馨提示:无商品信息...",

Toast.LENGTH_LONG).show();

// 关闭进度对话框

processdialog1.cancel();

if (mPopupWindow != null) {

mPopupWindow.dismiss();

mPopupWindow = null;

}

return;

}

// 相关组件的初始化工作

MyAdapter adapter = new MyAdapter(lists1, imageloader,

JinRilgActivity.this);

listview.setAdapter(adapter);

// 关闭进度对话框

processdialog1.cancel();

if (mPopupWindow != null) {

mPopupWindow.dismiss();

mPopupWindow = null;

}

} catch (JSONException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

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