2012-05-02 131 views
1

我使用gridview http://developer.android.com/resources/tutorials/views/hello-gridview.html的这个例子,只有较少的图像和一个角落的旋转按钮。我想单击图像,然后单击旋转按钮以旋转该图像,但我找不到如何操作。在gridview中旋转图像

任何人有什么想法?

+0

您是否尝试过使用'Animation'对象旋转'View'? – slayton

+0

你想旋转图像永久?换句话说,你想让它影响图像文件吗? –

+0

@slayton不,我没有尝试动画会尝试那一个。 –

回答

1

如果您跟踪要旋转的图像,可以使用getView中的setImageMatrix()来旋转图像。类似这样的:

HashMap<Integer, Matrix> mImageTransforms = new HashMap<Integer,Matrix>(); 
Matrix mIdentityMatrix = new Matrix(); 

// create a new ImageView for each item referenced by the Adapter 
public View getView(int position, View convertView, ViewGroup parent) { 
    ImageView imageView; 
    if (convertView == null) { // if it's not recycled, initialize some attributes 
     imageView = new ImageView(mContext); 
     imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); 
     imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
     imageView.setPadding(8, 8, 8, 8); 
    } else { 
     imageView = (ImageView) convertView; 
    } 

    Matrix m = mImageTransforms.get(position); 
    if (null == m) { 
     m = mIdentityMatrix; 
    } 
    imageView.setImageMatrix(m); 
    imageView.setImageResource(mThumbIds[position]); 
    return imageView; 
} 

void setImageRotation(int position, int degrees) { 
    Matrix m = mImageTransforms.remove(position);   
    if (degrees != 0) { 
     if (null == m) m = new Matrix(); 
     m.setRotate(degrees); 
     mImageTransforms.put(position, m); 
    } 
    notifyDataSetChanged(); 
} 

有一点需要注意。在触摸模式列表和网格中没有选择本身,但可以检查它们。获取网格视图来显示选中的状态有点棘手,也就是说Honeypad Tutorial显示了如何在列表视图中使用选中的视图,这可能会有所帮助。

+0

好吧让我看看我是否理解你的代码,应该用旋转按钮调用void setImageRotation(int position,int degrees)? –

+0

好吧它工作,谢谢! –

+0

太棒了!很高兴有帮助! – dagalpin