pull/32/head
kunfei 5 years ago
parent a0e875209b
commit 7cb8b70cdb
  1. 57
      app/src/main/java/io/legado/app/help/BlurTransformation.kt
  2. 2
      app/src/main/java/io/legado/app/ui/bookinfo/BookInfoActivity.kt
  3. 2
      app/src/main/java/io/legado/app/ui/bookinfo/BookInfoViewModel.kt
  4. 5
      app/src/main/res/layout/activity_book_info.xml

@ -0,0 +1,57 @@
package io.legado.app.help
import android.annotation.TargetApi
import android.content.Context
import android.graphics.Bitmap
import android.os.Build
import android.renderscript.Allocation
import android.renderscript.Element
import android.renderscript.RenderScript
import android.renderscript.ScriptIntrinsicBlur
import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool
import com.bumptech.glide.load.resource.bitmap.BitmapTransformation
import java.security.MessageDigest
class BlurTransformation(context: Context, private val radius: Int) : BitmapTransformation() {
private val rs: RenderScript = RenderScript.create(context)
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
override fun transform(pool: BitmapPool, toTransform: Bitmap, outWidth: Int, outHeight: Int): Bitmap {
val blurredBitmap = toTransform.copy(Bitmap.Config.ARGB_8888, true)
// Allocate memory for Renderscript to work with
//分配用于渲染脚本的内存
val input = Allocation.createFromBitmap(
rs,
blurredBitmap,
Allocation.MipmapControl.MIPMAP_FULL,
Allocation.USAGE_SHARED
)
val output = Allocation.createTyped(rs, input.type)
// Load up an instance of the specific script that we want to use.
//加载我们想要使用的特定脚本的实例。
val script = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs))
script.setInput(input)
// Set the blur radius
//设置模糊半径
script.setRadius(radius.toFloat())
// Start the ScriptIntrinsicBlur
//启动 ScriptIntrinsicBlur,
script.forEach(output)
// Copy the output to the blurred bitmap
//将输出复制到模糊的位图
output.copyTo(blurredBitmap)
return blurredBitmap
}
override fun updateDiskCacheKey(messageDigest: MessageDigest) {
messageDigest.update("blur transformation".toByteArray())
}
}

@ -17,7 +17,7 @@ class BookInfoActivity : VMBaseActivity<BookInfoViewModel>(R.layout.activity_boo
override fun onActivityCreated(savedInstanceState: Bundle?) {
viewModel.bookData.observe(this, Observer { showBook(it) })
viewModel.loadData(intent)
viewModel.loadBook(intent)
}
private fun showBook(book: Book) {

@ -12,7 +12,7 @@ class BookInfoViewModel(application: Application) : BaseViewModel(application) {
val bookData = MutableLiveData<Book>()
var inBookshelf = false
fun loadData(intent: Intent) {
fun loadBook(intent: Intent) {
execute {
intent.getStringExtra("bookUrl")?.let {
App.db.bookDao().getBook(it)?.let { book ->

@ -38,7 +38,8 @@
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:singleLine="true" />
android:singleLine="true"
android:textSize="16sp" />
<TextView
android:id="@+id/tv_author"
@ -111,7 +112,7 @@
<TextView
android:id="@+id/tv_intro"
android:layout_width="match_parent"
android:layout_height="80dp"
android:layout_height="106dp"
android:layout_margin="10dp"
android:scrollbars="vertical"
android:textIsSelectable="true"

Loading…
Cancel
Save