更改所选Coverflow android的背景

更改所选Coverflow android的背景,android,background,coverflow,Android,Background,Coverflow,我正在使用此CoverFlow: 我已经用这个coverflow创建了一个personnal应用程序,但我有一个问题:我想在选择项目(框)时更改背景(如此链接:)。我什么都试过了,但是没有成功。。。也许我需要做另一个adapterview,我不知道。如果你能帮助我,那将是完美的一天 对不起我的英语 下面是我的java代码: `public class CoverFlowExample extends Activity { /** Called when the activity is f

我正在使用此CoverFlow:

我已经用这个coverflow创建了一个personnal应用程序,但我有一个问题:我想在选择项目(框)时更改背景(如此链接:)。我什么都试过了,但是没有成功。。。也许我需要做另一个adapterview,我不知道。如果你能帮助我,那将是完美的一天

对不起我的英语

下面是我的java代码:

`public class CoverFlowExample extends Activity {
    /** Called when the activity is first created. */`

    @Override
    public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);

     //Use this if you want to use XML layout file
     setContentView(R.layout.main);
     CoverFlow coverFlow;
     coverFlow =  (CoverFlow) findViewById(R.id.coverflow);



`  coverFlow.setAdapter(new ImageAdapter(this));`

`  ImageAdapter coverImageAdapter =  new ImageAdapter(this);`

`  coverImageAdapter.createReflectedImages();`

`  coverFlow.setAdapter(coverImageAdapter);`

`  coverFlow.setSpacing(-145);`
`  coverFlow.setSelection(0, true);`
`  coverFlow.setAnimationDuration(1000);`


    }


` public class ImageAdapter extends BaseAdapter {`
`     int mGalleryItemBackground;`
`     private Context mContext;`

`     private FileInputStream fis;`

`     private Integer[] mImageIds = {
       R.drawable.demolitionman,
             R.drawable.diehard1,
             R.drawable.diehard2,
             R.drawable.diehard3,
             R.drawable.diehard4,
             R.drawable.district9,
             R.drawable.essai,
             R.drawable.essai2,
             R.drawable.dracula
     };`

     private ImageView[] mImages;

     public ImageAdapter(Context c) {
      mContext = c;
      mImages = new ImageView[mImageIds.length];
     }
`  public boolean createReflectedImages() {
          //The gap we want between the reflection and the original image
          final int reflectionGap = 0;`


          int index = 0;
          for (int imageId : mImageIds) {
        Bitmap originalImage = BitmapFactory.decodeResource(getResources(),
          imageId);
           int width = originalImage.getWidth();
           int height = originalImage.getHeight();


           //This will not scale but will flip on the Y axis
           Matrix matrix = new Matrix();
           matrix.preScale(1, -1);

           //Create a Bitmap with the flip matrix applied to it.
           //We only want the bottom half of the image
           Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0, height/2, width, height/2, matrix, false);


           //Create a new bitmap with same width but taller to fit reflection
           Bitmap bitmapWithReflection = Bitmap.createBitmap(width
             , (height + height/2), Config.ARGB_8888);

          //Create a new Canvas with the bitmap that's big enough for
          //the image plus gap plus reflection
          Canvas canvas = new Canvas(bitmapWithReflection);
          //Draw in the original image
          canvas.drawBitmap(originalImage, 0, 0, null);
          //Draw in the gap
          Paint deafaultPaint = new Paint();
          canvas.drawRect(0, height, width, height + reflectionGap, deafaultPaint);
          //Draw in the reflection
          canvas.drawBitmap(reflectionImage,0, height + reflectionGap, null);

          //Create a shader that is a linear gradient that covers the reflection
          Paint paint = new Paint();
          LinearGradient shader = new LinearGradient(0, originalImage.getHeight(), 0,
            bitmapWithReflection.getHeight() + reflectionGap, 0x70ffffff, 0x00ffffff,
            TileMode.CLAMP);
          //Set the paint to use this shader (linear gradient)
          paint.setShader(shader);
          //Set the Transfer mode to be porter duff and destination in
          paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
          //Draw a rectangle using the paint with our linear gradient
          canvas.drawRect(0, height, width,
            bitmapWithReflection.getHeight() + reflectionGap, paint);

          ImageView imageView = new ImageView(mContext);
          imageView.setImageBitmap(bitmapWithReflection);
          imageView.setLayoutParams(new CoverFlow.LayoutParams(180, 180));
          //imageView.setScaleType(ScaleType.MATRIX);
          imageView.setScaleType(ScaleType.FIT_CENTER); 
          mImages[index++] = imageView;

          }
       return true;
  }

     public int getCount() {
         return mImageIds.length;
     }

     public Object getItem(int position) {
         return position;
     }

     public long getItemId(int position) {
         return position;
     }

     public View getView(int position, View convertView, ViewGroup parent) {

      //Use this code if you want to load from resources
         ImageView i = new ImageView(mContext);

         //i.setImageResource(mImageIds[position]);
         i.setImageDrawable( mImages[position].getDrawable() );

         i.setLayoutParams(new CoverFlow.LayoutParams(340, 340));
         i.setScaleType(ImageView.ScaleType.CENTER_INSIDE);

         //Make sure we set anti-aliasing otherwise we get jaggies
         BitmapDrawable drawable = (BitmapDrawable) i.getDrawable();
         drawable.setAntiAlias(true);

         return i;

      //return mImages[position];
     }

`   /** Returns the size (0.0f to 1.0f) of the views
      * depending on the 'offset' to the center. */
      public float getScale(boolean focused, int offset) {
        /* Formula: 1 / (2 ^ offset) */
          return Math.max(0, 1.0f / (float)Math.pow(2, Math.abs(offset)));`
     ` }`




}
`
这对你很好

您可以在getview方法中实现这一点。您将使用setOnItemSelectedListener获得选择位置

下面是您必须在Coverflow中设置的侦听器

coverFlow.setOnItemSelectedListener(new SelectListener(this));

int sel_pos;

    public class ImageAdapter extends BaseAdapter 
    {

        private Context mContext;

        private Integer[] UnselectedImage = {
                R.drawable.a,
                R.drawable.b,
                R.drawable.c, 
                R.drawable.d, 
                R.drawable.e,
                R.drawable.f
        };

        private Integer[] selectedImage = 
            {
                R.drawable.a_sel,
                R.drawable.b_sel,
                R.drawable.c_sel, 
                R.drawable.d_sel, 
                R.drawable.e_sel,
                R.drawable.f_sel,
            };



        public ImageAdapter(Context c) 
        {
            mContext = c;

        }


        public int getCount() {
            return selectedImage.length;
        }

        public Object getItem(int position) {
            return position;
        }

        public long getItemId(int position) {
            return position;
        }

        @TargetApi(Build.VERSION_CODES.HONEYCOMB)
        @SuppressWarnings("deprecation")
        public View getView(int position, View convertView, ViewGroup parent)
        {               
            final ImageView i = new ImageView(mContext);            
            i.refreshDrawableState();
            i.setDrawingCacheEnabled(false);    
             i.setAdjustViewBounds(true);
            Log.e("position==", ""+position);           

            if(sel_pos==position)
            {               
                i.setImageResource(selectedImage[position]);                   
            }
            else 
            {               
                i.setImageResource(UnselectedImage[position]);

            }       
            i.setLayoutParams(new CoverFlow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
            i.setScaleType(ImageView.ScaleType.CENTER_INSIDE);



            BitmapDrawable drawable = (BitmapDrawable) i.getDrawable();
            drawable.setAntiAlias(true);

            return i;

        }

private class SelectListener implements AdapterView.OnItemSelectedListener 
    {   

        public SelectListener(Context c) 
        {

        }

        @SuppressWarnings("deprecation")
        public void onItemSelected(AdapterView<?> parent, View v, int position,long id) 
        {
            Log.e("Changed----->", "" + position);
            // Zoom the new selected view
            try 
            {               

                sel_pos = position;             
                coverImageAdapter.notifyDataSetChanged();



            } catch (Exception animate) 
            {

            }       

        }

        public void onNothingSelected(AdapterView<?> parent) {
        }

    }
coverFlow.setOnItemSelectedListener(新SelectListener(this));
国际选择位置;
公共类ImageAdapter扩展了BaseAdapter
{
私有上下文;
私有整数[]未选择的图像={
R.drawable.a,
R.drawable.b,
R.drawable.c,
R.drawable.d,
R.drawable.e,
R.可牵引
};
私有整数[]SelecteImage=
{
R.drawable.a_sel,
R.drawable.b_sel,
R.drawable.c_sel,
R.drawable.d_sel,
R.drawable.e_sel,
R.drawable.f_sel,
};
公共图像适配器(上下文c)
{
mContext=c;
}
public int getCount(){
返回selectedImage.length;
}
公共对象getItem(int位置){
返回位置;
}
公共长getItemId(int位置){
返回位置;
}
@TargetApi(构建版本代码蜂窝)
@抑制警告(“弃用”)
公共视图getView(int位置、视图转换视图、视图组父视图)
{               
最终图像视图i=新图像视图(mContext);
i、 refreshDrawableState();
i、 setDrawingCacheEnabled(假);
i、 setAdjustViewBounds(真);
Log.e(“位置==”,“”+位置);
如果(选择位置==位置)
{               
i、 设置图像资源(选择图像[位置]);
}
其他的
{               
i、 setImageResource(未选择的图像[位置]);
}       
i、 setLayoutParams(新的CoverFlow.LayoutParams(LayoutParams.WRAP_内容,LayoutParams.WRAP_内容));
i、 setScaleType(ImageView.ScaleType.CENTER_内);
BitmapDrawable drawable=(BitmapDrawable)i.getDrawable();
可绘制。setAntiAlias(真);
返回i;
}
私有类SelectListener实现AdapterView.OnItemSelectedListener
{   
公共SelectListener(上下文c)
{
}
@抑制警告(“弃用”)
已选择公共位置(AdapterView父视图、视图v、整型位置、长id)
{
Log.e(“更改------>”,“+位置);
//缩放新选定的视图
尝试
{               
选择位置=位置;
coverImageAdapter.notifyDataSetChanged();
}捕捉(异常动画)
{
}       
}
未选择公共无效(AdapterView父级){
}
}
享受代码