画像を拡大縮小するときにアンドロイドが何をしているかを調べようとしています。具体的には "centercrop"タイプです。答えを見つけるために、私はImageViewのソースコードを検索し、hereを見つけました。画像ビューのスケーリング方法 "centercrop" as code
それでは、私が試したことは、このコードです:
public Bitmap buildBluredBoxBackground() {
int [] screenSize = Utilities.getScreenSize(mainActivityContext); //screensize[0] = x and [1] is y
Matrix mDrawMatrix = new Matrix();
Bitmap bitmap = ((BitmapDrawable)fullscreenViewHolder.imageViewArt.getDrawable()).getBitmap();
float scale;
float dx = 0, dy = 0;
if (bitmap.getWidth() * screenSize[1] > screenSize[0] * bitmap.getHeight()) {
scale = (float) screenSize[1]/(float) bitmap.getHeight();
dx = (screenSize[0] - bitmap.getWidth() * scale) * 0.5f;
} else {
scale = (float) screenSize[0]/(float) bitmap.getWidth();
dy = (screenSize[1] - bitmap.getHeight() * scale) * 0.5f;
}
mDrawMatrix.setScale(scale, scale);
mDrawMatrix.postTranslate(Math.round(dx), Math.round(dy));
result = Bitmap.createBitmap(bitmap,0,0,bitmap.getWidth(),bitmap.getHeight(),mDrawMatrix,true);
... //Some processing work
return result;
}
しかし、それは私に同じ結果を与えていません。私は間違って何をしていますか?
相続人例:
オリジナルピクチャー
Orginal ImageViewのCentercrop
しようとしたコード
編集:ImageViewの
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/imageViewFullscreenArt"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/imageViewFullscreenArtBluredBox"/>
</FrameLayout>
だから私のImageViewのの XMLをfullscreenedされます。それはなぜscreenSizeを使って処理しているのですか?私はそれを
Bitmap bluredBoxBackground = buildBluredBoxBackground();
imageViewBluredBox.setImageDrawable(new BitmapDrawable(getResources(),bluredBoxBackground));
詳細な説明を適用していますか
コード: イムは、ちょうどImageView.setScaleType(ScaleType.CENTER_CROP)
と同じ効果を取得しようとしています。だから私のコードは元のsetScaleType
メソッドのように同じことをする必要があります。なぜ私はそれをコードとして必要としますか?私の状況では私のImageViewのdrawingcacheを取得することはできませんが、私は&何とかそれを編集する必要があります。
は、完全な描画可能のコードを投稿しますか?あなたはImageViewでそれをどのように適用していますか? –
1)Drawableが元のものから変更されている可能性のある「ImageView」からビットマップを取得しています。 2)ターゲットビューのサイズの代わりに画面のサイズを使用しています。 3)scaleType = "matrix"を使用するのではなく、スケーリングされたビットマップを作成しています。あなたが達成しようとしていることを理解するためにもっとコードを見る必要がありますが、これは簡単な修正でなければなりません。解決しようとしている正確な問題の詳細な説明と一緒に、ターゲット・ビューを持つXMLレイアウトとともに活動のコードを投稿してください。 –
私はいくつかのコードと私の問題のより良い説明と私のポストを編集しました。今度は理解してもらいたいと思っています。あなたの助けをありがとう –