Saya menggunakan kode berikut untuk memutar gambar di ImageView dengan sudut. Apakah ada metode yang lebih sederhana dan lebih kompleks yang tersedia.
ImageView iv = (ImageView)findViewById(imageviewid);
TextView tv = (TextView)findViewById(txtViewsid);
Matrix mat = new Matrix();
Bitmap bMap = BitmapFactory.decodeResource(getResources(),imageid);
mat.postRotate(Integer.parseInt(degree));===>angle to be rotated
Bitmap bMapRotate = Bitmap.createBitmap(bMap, 0, 0,bMap.getWidth(),bMap.getHeight(), mat, true);
iv.setImageBitmap(bMapRotate);
Jawaban:
Cara sederhana lain untuk merotasi
ImageView
:PEMBARUAN:
Diperlukan impor:
Kode: (Dengan asumsi
imageView
,angle
,pivotX
&pivotY
sudah ditentukan)Metode ini tidak perlu membuat bitmap baru setiap kali.
sumber
ImageView
-nilai:matrix.postRotate( 180f, imageView.getDrawable().getBounds().width()/2, imageView.getDrawable().getBounds().height()/2);
ImageView
'ssrc
atribut.getDrawable()
itu kembali nol bagi saya sampai saya menyadari bahwa saya telah menetapkanImageView
'sbackground
atribut bukansrc
. facepalmmImageView.setRotation(angle)
dengan API> = 11sumber
ViewPropertyAnimator
, yang digunakan sepertiaView.animate().rotation(20).start()
rotationBy()
. Sebagai contohview.animate().rotationBy(180f).start()
,. Tetapi menjadi bermasalah jika tampilan diklik berturut-turut.Jika Anda mendukung API 11 atau lebih tinggi, Anda bisa menggunakan atribut XML berikut:
Mungkin tidak ditampilkan dengan benar di pratinjau Android Studio xml, tetapi berfungsi seperti yang diharapkan.
sumber
background
untuk melihat efeknya.Ada dua cara untuk melakukan itu:
1 Menggunakan
Matrix
untuk membuat bitmap baru:2 digunakan
RotateAnimation
padaView
Anda ingin Putar, dan pastikan Animasi set untukfillAfter=true
,duration=0
, danfromDegrees=toDgrees
dan Mengembang Animasi dalam kode:
sumber
Saya tahu ini sangat terlambat, tetapi itu membantu saya sehingga dapat membantu orang lain.
Pada API 11, Anda dapat mengatur rotasi absolut ImageView secara terprogram dengan menggunakan
imageView.setRotation(angleInDegrees);
metode ini.Secara absolut, maksud saya Anda dapat berulang kali memanggil fungsi ini tanpa harus melacak rotasi saat ini. Artinya, jika saya memutar dengan melewati
15F
kesetRotation()
metode, dan kemudian memanggilsetRotation()
lagi dengan30F
, rotasi gambar dengan be 30 derajat, tidak 45 derajat.Catatan: Ini benar-benar berfungsi untuk subclass apa pun dari objek View , bukan hanya ImageView.
sumber
Ini adalah implementasi saya dari RotatableImageView . Penggunaan sangat mudah: hanya menyalin attrs.xml dan RotatableImageView.java ke dalam proyek Anda dan menambahkan RotatableImageView untuk tata letak Anda. Tetapkan sudut rotasi yang diinginkan menggunakan contoh: parameter sudut .
Jika Anda memiliki beberapa masalah dengan tampilan gambar, coba ubah kode dalam metode RotatableImageView.onDraw () atau gunakan metode draw ().
sumber
Dapat juga dilakukan dengan cara ini: -
dapatkan dari sini.
sumber
Juga, jika Anda ingin memutar ImageView sebesar 180 derajat secara vertikal atau horizontal, Anda dapat menggunakan
scaleY
atauscaleX
properti dan mengaturnya-1f
. Ini adalah contoh Kotlin:1f
nilai digunakan untuk mengembalikan ImageView ke keadaan normal:sumber
Saya punya solusi untuk ini. Sebenarnya ini adalah solusi untuk masalah yang muncul setelah rotasi (Gambar persegi panjang tidak sesuai dengan ImagView) tetapi juga mencakup masalah Anda .. Meskipun Solusi ini memiliki Animasi yang lebih baik atau lebih buruk
Mendapatkan parameter dari imageView tidak dimungkinkan pada inisialisasi aktivitas Untuk melakukannya, silakan merujuk ke solusi ini ATAU atur dimensi di onKlik Tombol Seperti ini
Dan kode yang akan dijalankan ketika kita ingin memutar ImageView
Solusi ini cukup untuk Masalah di atas. Meskipun itu akan mengecilkan imageView bahkan jika itu tidak perlu (ketika tinggi lebih kecil dari Lebar). Jika itu mengganggu Anda, Anda dapat menambahkan operator ternary lain di dalam scaleX / scaleY.
sumber
Saya pikir metode terbaik :)
sumber
Putar gambar di Android dengan penundaan:
sumber
coba ini pada tampilan kustom
sumber
inilah solusi yang bagus untuk meletakkan gambar yang dapat diputar untuk imageView:
pemakaian:
alternatif lain:
juga, jika Anda ingin memutar bitmap, tetapi takut OOM, Anda dapat menggunakan solusi NDK yang saya buat di sini
sumber
Jika Anda hanya ingin memutar tampilan secara visual, Anda dapat menggunakan:
sumber
Untuk Kotlin,
Ini akan memutar imageView daripada memutar gambar
Juga, meskipun metode di
View
kelas. Jadi Anda dapat memutar tampilan apa pun dengan cukup banyak.sumber
Sayangnya, saya pikir tidak ada. The
Matrix
kelas bertanggung jawab untuk semua manipulasi gambar, apakah itu berputar, menyusut / tumbuh, miring, dllhttp://developer.android.com/reference/android/graphics/Matrix.html
Saya minta maaf, tetapi saya tidak bisa memikirkan alternatif. Mungkin orang lain mungkin bisa, tetapi saat saya harus memanipulasi gambar saya menggunakan Matrix.
Semoga berhasil!
sumber
Solusi lain yang mungkin adalah membuat tampilan Gambar kustom Anda sendiri (katakanlah
RotateableImageView extends ImageView
) ... dan menimpa onDraw () untuk memutar kanvas / bitmap sebelum kembali ke kanvas. Jangan lupa untuk mengembalikan kanvas kembali.Tetapi jika Anda hanya akan memutar satu contoh tampilan gambar, solusi Anda harus cukup baik.
sumber
tanpa matriks dan animasi:
sumber
cukup tulis ini di hasil onactivity Anda
sumber
Coba kode ini 100% berfungsi;
Pada tombol putar klik tulis kode ini:
sumber
Alih-alih mengonversi gambar ke bitmap lalu memutarnya, cobalah memutar tampilan gambar langsung seperti kode di bawah ini.
sumber
Ikuti jawaban di bawah ini untuk rotasi tampilan gambar yang berkelanjutan
Jika tombol rotate diklik
sumber
jika Anda ingin memutar gambar sebesar 180 derajat kemudian letakkan dua nilai ini di tag imageview: -
Penjelasan: - scaleX = 1 dan scaleY = 1 repesent itu keadaan normal tetapi jika kita menempatkan -1 pada properti scaleX / scaleY maka akan diputar oleh 180 derajat
sumber
Cara Penggunaan?
sumber
Anda cukup menggunakan atribut rotasi ImageView
Di bawah ini adalah atribut dari ImageView dengan detail dari sumber Android
sumber