使用水平的scroolview  …

来源:互联网 发布:光猫端口1.2同时连接 编辑:程序博客网 时间:2024/05/10 15:17

Activity类

 

[java] viewplaincopy在CODE上查看代码片派生到我的代码片
  1. package com.example.viewgroupdemo;  
  2.   
  3. import java.util.HashMap;  
  4. import java.util.Map;  
  5.   
  6. import android.app.Activity;  
  7. import android.content.BroadcastReceiver;  
  8. import android.content.Context;  
  9. import android.content.Intent;  
  10. import android.content.IntentFilter;  
  11. import android.os.Bundle;  
  12. import android.view.View;  
  13. import android.view.ViewGroup.LayoutParams;  
  14. import android.widget.ImageSwitcher;  
  15. import android.widget.ImageView;  
  16. import android.widget.ViewSwitcher.ViewFactory;  
  17.   
  18. import com.example.hsv.AppConstant;  
  19. import com.example.hsv.HSVAdapter;  
  20. import com.example.hsv.HSVLayout;  
  21.   
  22.   
  23. public class MainActivity extends Activity implements ViewFactory  
  24.   
  25.     public ImageSwitcher imageSwitcher null// 图片切换  
  26.     private HSVLayout movieLayout null 
  27.     private HSVAdapter adapter null 
  28.     private IntentFilter intentFilter null 
  29.     private BroadcastReceiver receiver null 
  30.     private int nCount 0 
  31.     // pic in the drawable  
  32.     private Integer[] images R.drawable.pre0, R.drawable.pre1,  
  33.             R.drawable.pre2, R.drawable.pre3, R.drawable.pre4, R.drawable.pre5,  
  34.             R.drawable.pre6, R.drawable.pre7, R.drawable.pre8, R.drawable.pre9,  
  35.             R.drawable.pre10 };  
  36.   
  37.     @Override  
  38.     public void onCreate(Bundle savedInstanceState)  
  39.         super.onCreate(savedInstanceState);  
  40.         setContentView(R.layout.main);  
  41.         imageSwitcher (ImageSwitcher) findViewById(R.id.image_switcher);  
  42.         imageSwitcher.setFactory(this);  
  43.         movieLayout (HSVLayout) findViewById(R.id.movieLayout);  
  44.         adapter new HSVAdapter(this);  
  45.         for (int 0images.length; i++)  
  46.             Map map new HashMap();  
  47.             map.put("image"images[i]);  
  48.             // map.put("image", getResources().getDrawable(images[i]));  
  49.             map.put("index"(i+1));  
  50.             adapter.addObject(map);  
  51.          
  52.         movieLayout.setAdapter(adapter);  
  53.         // 设置当前显示的图片  
  54.         imageSwitcher.setImageResource(images[nCount]);  
  55.      
  56.   
  57.     @Override  
  58.     protected void onPause()  
  59.         // TODO Auto-generated method stub  
  60.         super.onPause();  
  61.         unregisterReceiver(receiver);  
  62.      
  63.   
  64.     @Override  
  65.     protected void onResume()  
  66.         // TODO Auto-generated method stub  
  67.         super.onResume();  
  68.         if (receiver == null 
  69.             receiver new UpdateImageReceiver();  
  70.          
  71.         registerReceiver(receiver, getIntentFilter());  
  72.      
  73.   
  74.       
  75.     private IntentFilter getIntentFilter()  
  76.         if (intentFilter == null 
  77.             intentFilter new IntentFilter();  
  78.             intentFilter.addAction(AppConstant.UPDATE_IMAGE_ACTION);  
  79.          
  80.         return intentFilter;  
  81.      
  82.       
  83.       
  84.     @Override  
  85.     public View makeView()  
  86.         // TODO Auto-generated method stub  
  87.         ImageView imageView new ImageView(getApplicationContext());  
  88.         imageView.setBackgroundColor(0xFF000000);  
  89.         imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);  
  90.         imageView.setLayoutParams(new ImageSwitcher.LayoutParams(  
  91.                 LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));  
  92.         return imageView;  
  93.      
  94.       
  95.     class UpdateImageReceiver extends BroadcastReceiver{  
  96.   
  97.         @Override  
  98.         public void onReceive(Context context, Intent intent)  
  99.             // TODO Auto-generated method stub  
  100.             if(intent.getAction().equals(AppConstant.UPDATE_IMAGE_ACTION)){  
  101.                 int index intent.getIntExtra("index"Integer.MAX_VALUE);  
  102.                 imageSwitcher.setImageResource(images[index-1]);  
  103.                 System.out.println("UpdateImageReceiver----" index);  
  104.              
  105.          
  106.           
  107.      
  108.  

自定义HSVLayout.java

 

 

[java] viewplaincopy在CODE上查看代码片派生到我的代码片
  1. package com.example.hsv;  
  2.   
  3. import java.util.Map;  
  4.   
  5. import android.content.Context;  
  6. import android.content.Intent;  
  7. import android.util.AttributeSet;  
  8. import android.view.View;  
  9. import android.widget.LinearLayout;  
  10. import android.widget.Toast;  
  11.   
  12. public class HSVLayout extends LinearLayout  
  13.   
  14.     private HSVAdapter adapter;  
  15.     private Context context;  
  16.   
  17.     public HSVLayout(Context context, AttributeSet attrs)  
  18.         super(context, attrs);  
  19.         this.context context;  
  20.      
  21.   
  22.     public void setAdapter(HSVAdapter adapter)  
  23.         this.adapter adapter;  
  24.         for (int 0adapter.getCount(); i++)  
  25.             final Map map adapter.getItem(i);  
  26.             View view adapter.getView(i, nullnull);  
  27.             view.setPadding(100100);  
  28.             // 为视图设定点击监听器  
  29.             view.setOnClickListener(new OnClickListener()  
  30.                 @Override  
  31.                 public void onClick(View v)  
  32.                     Toast.makeText(context, "您选择了" map.get("index"),  
  33.                             Toast.LENGTH_SHORT).show();  
  34.                     Intent intent new Intent();  
  35.                     intent.setAction(AppConstant.UPDATE_IMAGE_ACTION);  
  36.                     intent.putExtra("index"(Integer)map.get("index"));  
  37.                     context.sendBroadcast(intent);  
  38.                       
  39.                  
  40.             });  
  41.             this.setOrientation(HORIZONTAL);  
  42.             this.addView(view, new LinearLayout.LayoutParams(  
  43.                     300LayoutParams.WRAP_CONTENT));  
  44.          
  45.      
  46.  
还需要定义一个适配器HSVAdapter.java

 

 

[java] viewplaincopy在CODE上查看代码片派生到我的代码片
  1. package com.example.hsv;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5. import java.util.Map;  
  6.   
  7. import com.example.viewgroupdemo.R;  
  8.   
  9. import android.content.Context;  
  10. import android.view.LayoutInflater;  
  11. import android.view.View;  
  12. import android.view.ViewGroup;  
  13. import android.widget.BaseAdapter;  
  14. import android.widget.ImageView;  
  15.   
  16.   
  17. public class HSVAdapter extends BaseAdapter  
  18.   
  19.     private Listlist;  
  20.     private Context context;  
  21.     public HSVAdapter(Context context){  
  22.         this.context=context;  
  23.         this.list=new ArrayList>();  
  24.      
  25.     @Override  
  26.     public int getCount()  
  27.         return list.size();  
  28.      
  29.   
  30.     @Override  
  31.     public Map getItem(int location)  
  32.         return list.get(location);  
  33.      
  34.   
  35.     @Override  
  36.     public long getItemId(int arg0)  
  37.         return arg0;  
  38.      
  39.   
  40.     public void addObject(Map map){  
  41.         list.add(map);  
  42.         notifyDataSetChanged();  
  43.      
  44.     @Override  
  45.     public View getView(int location, View arg1, ViewGroup arg2)  
  46.         View view LayoutInflater.from(context).inflate(R.layout.movie,null);  
  47.         ImageView image=(ImageView)view.findViewById(R.id.movie_image);  
  48.         Map map=getItem(location); //获取当前的Item  
  49.         //image.setBackground((Drawable)map.get("image"));  
  50.         image.setBackgroundResource((Integer) map.get("image"));  
  51.         return view;  
  52.      
  53.   
  54.  

main.xml

 

 

[html] viewplaincopy在CODE上查看代码片派生到我的代码片
0 0
原创粉丝点击