package com.emop.client; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import java.util.Timer; import java.util.TimerTask; import android.content.Intent; import android.database.Cursor; import android.graphics.Rect; import android.net.Uri; import android.os.Bundle; import android.provider.BaseColumns; import android.view.KeyEvent; import android.view.View; import android.view.View.OnFocusChangeListener; import android.view.ViewGroup; import android.view.Window; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.Gallery; import android.widget.ImageView; import android.widget.ImageView.ScaleType; import android.widget.LinearLayout; import android.widget.Toast; import com.emop.client.io.FmeiClient; import com.emop.client.provider.Schema; import com.emop.client.provider.model.Item; import com.tencent.mm.sdk.platformtools.Log; public class HotActivity extends BaseActivity { //private FmeiClient client = null; private BaseAdapter actAdapter = null; //private //private LinearLayout cateLayout = null; private int winWidth = 0; private int picMarginDp = 2; private Map<Integer, String> hotName = new HashMap<Integer, String>(); private Timer timer = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.hot_cate_view); client = FmeiClient.getInstance(this); Gallery mGallery = (Gallery)findViewById(R.id.header_banner); actAdapter = this.loadLinkActivityAdapter(); mGallery.setAdapter(actAdapter); mGallery.setOnItemClickListener(itemClick); //Log.d(Constants.TAG_EMOP, "dp:150 -> px:" + cateHeight); Rect displayRectangle = new Rect(); Window window = getWindow(); window.getDecorView().getWindowVisibleDisplayFrame(displayRectangle); winWidth = displayRectangle.width(); timer = new Timer(); AutoChangePager l = new AutoChangePager(mGallery); timer.scheduleAtFixedRate(l, 1000, 3000); mGallery.setOnFocusChangeListener(l); //mGallery.s } private OnItemClickListener itemClick = new OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> v, View v2, int position, long id) { HashMap<String, Object> item = (HashMap<String, Object>)actAdapter.getItem(position); String itemText = (String)item.get("ItemText"); itemText = itemText.trim(); String itemId = item.get("id").toString(); Log.d(Constants.TAG_EMOP, "click activity:" + itemText + ", id:" + itemId); if(itemText.startsWith("/")){ Uri dataUri = Uri.parse("content://" + Schema.AUTHORITY + itemText.trim()); Intent intent = new Intent().setClass(HotActivity.this, GuangItemListActivity.class); //intent.putExtra("title", itemText); intent.setData(dataUri); Log.d(Constants.TAG_EMOP, "click hot:" + dataUri.toString()); startActivity(intent); }else if(itemText.toLowerCase().startsWith("http:")){ Intent intent = new Intent().setClass(HotActivity.this, WebViewActivity.class); intent.putExtra("http_url", itemText.trim()); startActivity(intent); }else { showToast(itemText); } } }; private BaseAdapter loadLinkActivityAdapter(){ int topicId = client.getActivityTopicId(getContentResolver()); Uri topicList = Uri.parse("content://" + Schema.AUTHORITY + "/act/" + topicId + "/list"); Cursor c = client.getItemList(getContentResolver(), topicList); ArrayList<HashMap<String, Object>> lstImageItem = new ArrayList<HashMap<String, Object>>(); boolean hasMore = c.moveToFirst(); int picIndex = -1; int textIndex = -1; int id = -1; if(hasMore){ picIndex = c.getColumnIndex(Item.PIC_URL); textIndex = c.getColumnIndex(Item.MESSAGE); id = c.getColumnIndex(BaseColumns._ID); }else { Log.d(Constants.TAG_EMOP, "Not found data by uri:"); } for(;hasMore; hasMore = c.moveToNext()){ HashMap<String, Object> map = new HashMap<String, Object>(); map.put("ItemImage", c.getString(picIndex)); map.put("ItemText", c.getString(textIndex)); map.put("id", c.getInt(id)); lstImageItem.add(map); } if(c != null){ c.close(); } return new ImageAdapter(lstImageItem); } private class ImageAdapter extends BaseAdapter{ private ArrayList<HashMap<String, Object>> itemList = null; public ImageAdapter(ArrayList<HashMap<String, Object>> lstImageItem){ itemList = lstImageItem; } @Override public int getCount() { return itemList.size(); } @Override public Object getItem(int index) { return itemList.get(index); } @Override public long getItemId(int index) { HashMap<String, Object> map = (HashMap<String, Object>)this.getItem(index); Integer i = (Integer)map.get("id"); return (int)i; } @Override public View getView(int index, View oldView, ViewGroup arg2) { // TODO Auto-generated method stub LinearLayout liner = new LinearLayout(HotActivity.this); liner.setBackgroundColor(getResources().getColor(R.color.color_hot_item)); liner.setLayoutParams(new Gallery.LayoutParams(Gallery.LayoutParams.FILL_PARENT, Gallery.LayoutParams.FILL_PARENT )); ImageView i = new ImageView (HotActivity.this); i.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT )); i.setScaleType(ScaleType.CENTER_CROP); liner.addView(i); HashMap<String, Object> item = (HashMap<String, Object>)this.getItem(index); String url = (String)item.get("ItemImage"); client.appImgLoader.loadImage(url, i, winWidth, true); //client.appImgLoader.loadImage(url, i); return liner; } } public void onRefresh(View v){ Toast.makeText(HotActivity.this, "热门刷新成功", Toast.LENGTH_SHORT).show(); } class AutoChangePager extends TimerTask implements OnFocusChangeListener{ Gallery mGallery = null; private long lastChangedTime = 0; private int dir = 0; AutoChangePager(Gallery mGallery){ this.mGallery = mGallery; } @Override public void run() { if(System.currentTimeMillis() - lastChangedTime > 3000){ autoChange(); lastChangedTime = System.currentTimeMillis(); } } @Override public void onFocusChange(View v, boolean hasFocus) { lastChangedTime = System.currentTimeMillis(); } private void autoChange(){ if(mGallery.getAdapter().getCount() < 2){ return; } int i = mGallery.getSelectedItemPosition(); //Log.d("emop", "cur selected item position:" + i); if(i >= mGallery.getAdapter().getCount() - 1){ dir = -1; }else if(i == 0){ dir = 1; } handler.post(new Runnable(){ @Override public void run() { if(dir == -1){ mGallery.onKeyDown(KeyEvent.KEYCODE_DPAD_LEFT, new KeyEvent(0, 0)); }else { mGallery.onKeyDown(KeyEvent.KEYCODE_DPAD_RIGHT, new KeyEvent(0, 0)); } } }); } } }