|
|
@ -5,88 +5,71 @@ import android.graphics.Bitmap |
|
|
|
import android.graphics.BitmapFactory |
|
|
|
import android.graphics.BitmapFactory |
|
|
|
import android.graphics.Color |
|
|
|
import android.graphics.Color |
|
|
|
import android.widget.TextView |
|
|
|
import android.widget.TextView |
|
|
|
|
|
|
|
import android.widget.Toast |
|
|
|
import androidx.recyclerview.widget.GridLayoutManager |
|
|
|
import androidx.recyclerview.widget.GridLayoutManager |
|
|
|
import com.bumptech.glide.Glide |
|
|
|
import com.bumptech.glide.Glide |
|
|
|
import com.bumptech.glide.load.engine.DiskCacheStrategy |
|
|
|
import com.bumptech.glide.load.engine.DiskCacheStrategy |
|
|
|
import com.chad.library.adapter.base.BaseQuickAdapter |
|
|
|
import com.chad.library.adapter.base.BaseQuickAdapter |
|
|
|
import com.chad.library.adapter.base.viewholder.BaseViewHolder |
|
|
|
import com.chad.library.adapter.base.viewholder.BaseViewHolder |
|
|
|
import io.github.devzwy.nsfw.NSFWHelper |
|
|
|
import io.github.devzwy.nsfw.NSFWHelper |
|
|
|
|
|
|
|
import io.github.devzwy.nsfw.NSFWScoreBean |
|
|
|
|
|
|
|
import io.github.devzwy.nsfw.getNsfwScore |
|
|
|
import kotlinx.android.synthetic.main.activity_main.* |
|
|
|
import kotlinx.android.synthetic.main.activity_main.* |
|
|
|
import kotlin.random.Random |
|
|
|
import kotlin.random.Random |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class MainActivity : BaseActivity() { |
|
|
|
class MainActivity : BaseActivity() { |
|
|
|
override fun initData() { |
|
|
|
override fun initData() { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (resources.assets.list( |
|
|
|
|
|
|
|
"img" |
|
|
|
|
|
|
|
).isNullOrEmpty() |
|
|
|
|
|
|
|
) { |
|
|
|
|
|
|
|
Toast.makeText(this, "在assets下放置图片后再运行demo", Toast.LENGTH_SHORT).show() |
|
|
|
|
|
|
|
return |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mRecyclerView.layoutManager = GridLayoutManager(this, 2) |
|
|
|
mRecyclerView.layoutManager = GridLayoutManager(this, 2) |
|
|
|
mRecyclerView.adapter = |
|
|
|
mRecyclerView.adapter = |
|
|
|
object : BaseQuickAdapter<MyNSFWBean, BaseViewHolder>(R.layout.item_main) { |
|
|
|
object : BaseQuickAdapter<MyNSFWBean, BaseViewHolder>(R.layout.item_main) { |
|
|
|
@SuppressLint("SetTextI18n") |
|
|
|
@SuppressLint("SetTextI18n") |
|
|
|
override fun convert(holder: BaseViewHolder, item: MyNSFWBean) { |
|
|
|
override fun convert(holder: BaseViewHolder, item: MyNSFWBean) { |
|
|
|
Glide.with(this@MainActivity).load(item.bitmap) |
|
|
|
|
|
|
|
.diskCacheStrategy(DiskCacheStrategy.ALL) |
|
|
|
|
|
|
|
.into(holder.getView(R.id.iv)) |
|
|
|
|
|
|
|
holder.getView<TextView>(R.id.tv).apply { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//异步方式 |
|
|
|
item.apply { |
|
|
|
NSFWHelper.getNSFWScore(item.bitmap) { |
|
|
|
Glide.with(this@MainActivity).load("file:///android_asset/${path}") |
|
|
|
this.text = |
|
|
|
.diskCacheStrategy(DiskCacheStrategy.ALL) |
|
|
|
"nsfw:${it.nsfwScore}\nsfw:${it.sfwScore}\n扫描耗时:${it.timeConsumingToScanData} ms" |
|
|
|
.into(holder.getView(R.id.iv)) |
|
|
|
if (it.nsfwScore > 0.7) { |
|
|
|
|
|
|
|
this.setBackgroundColor(Color.parseColor("#C1FF0000")) |
|
|
|
holder.getView<TextView>(R.id.tv).let { iv -> |
|
|
|
} else if (it.nsfwScore > 0.5) { |
|
|
|
iv.text = |
|
|
|
this.setBackgroundColor(Color.parseColor("#C1FF9800")) |
|
|
|
"nsfw:${nsfwScoreBean.nsfwScore}\nsfw:${nsfwScoreBean.sfwScore}\n扫描耗时:${nsfwScoreBean.timeConsumingToScanData} ms" |
|
|
|
|
|
|
|
if (nsfwScoreBean.nsfwScore > 0.7) { |
|
|
|
|
|
|
|
iv.setBackgroundColor(Color.parseColor("#C1FF0000")) |
|
|
|
|
|
|
|
} else if (nsfwScoreBean.nsfwScore > 0.5) { |
|
|
|
|
|
|
|
iv.setBackgroundColor(Color.parseColor("#C1FF9800")) |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
this.setBackgroundColor(Color.parseColor("#803700B3")) |
|
|
|
iv.setBackgroundColor(Color.parseColor("#803700B3")) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// //同步方式 |
|
|
|
|
|
|
|
// NSFWHelper.getNSFWScore(item.bitmap).let { |
|
|
|
|
|
|
|
// this.text = |
|
|
|
|
|
|
|
// "nsfw:${it.nsfwScore}\nsfw:${it.sfwScore}\n扫描耗时:${it.timeConsumingToScanData} ms" |
|
|
|
|
|
|
|
// if (it.nsfwScore > 0.7) { |
|
|
|
|
|
|
|
// this.setBackgroundColor(Color.parseColor("#C1FF0000")) |
|
|
|
|
|
|
|
// } else if (it.nsfwScore > 0.5) { |
|
|
|
|
|
|
|
// this.setBackgroundColor(Color.parseColor("#C1FF9800")) |
|
|
|
|
|
|
|
// } else { |
|
|
|
|
|
|
|
// this.setBackgroundColor(Color.parseColor("#803700B3")) |
|
|
|
|
|
|
|
// } |
|
|
|
|
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
}.also { adapter -> |
|
|
|
}.also { adapter -> |
|
|
|
adapter.setAnimationWithDefault(BaseQuickAdapter.AnimationType.ScaleIn) |
|
|
|
adapter.setAnimationWithDefault(BaseQuickAdapter.AnimationType.ScaleIn) |
|
|
|
adapter.isAnimationFirstOnly = false |
|
|
|
adapter.isAnimationFirstOnly = false |
|
|
|
|
|
|
|
resources.assets.list( |
|
|
|
|
|
|
|
"img" |
|
|
|
|
|
|
|
)?.forEach { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
adapter.addData( |
|
|
|
|
|
|
|
MyNSFWBean( |
|
|
|
|
|
|
|
"img/${it}", |
|
|
|
|
|
|
|
BitmapFactory.decodeStream(resources.assets.open("img/${it}")) |
|
|
|
|
|
|
|
.getNsfwScore() |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
Thread(Runnable { |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (i in 1..50) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BitmapFactory.decodeStream( |
|
|
|
|
|
|
|
resources.assets.open( |
|
|
|
|
|
|
|
"img/${ |
|
|
|
|
|
|
|
resources.assets.list( |
|
|
|
|
|
|
|
"img" |
|
|
|
|
|
|
|
)!![Random.nextInt( |
|
|
|
|
|
|
|
1, resources.assets.list( |
|
|
|
|
|
|
|
"img" |
|
|
|
|
|
|
|
)!!.size |
|
|
|
|
|
|
|
)] |
|
|
|
|
|
|
|
}" |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
).also { bitmap -> |
|
|
|
|
|
|
|
runOnUiThread { |
|
|
|
|
|
|
|
adapter.addData(MyNSFWBean(bitmap)) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}).start() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -96,4 +79,4 @@ class MainActivity : BaseActivity() { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
data class MyNSFWBean(val bitmap: Bitmap) |
|
|
|
data class MyNSFWBean(val path: String, val nsfwScoreBean: NSFWScoreBean) |
|
|
|