2012-05-02 175 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