如何从 URL 获取图像资源
How can i get a image resource from an URL
我尝试使用库“Picasso”,但它需要一个预先创建的 ImageView,我试图将它放入一个新的 ImageView,但是当我放入 id 时ImageView 会给我一个错误。
我正在使用此代码创建 ImageView:
val photo = ImageView(applicationContext)
photo.id = variable1
Scroll.addView(photo)
我正在使用这段代码来放置图像:
Picasso.get().load("$url").into(variable1)
这行不通,所以我认为将照片放入预先创建的 ImageView 中然后获取该 ImageView 的图像引用并将其提供给新的 ImageView 是一个好主意:
var photoResource = R.id.borramePerro.getResource()
photo.setImageResource(photoResource)
但是没用。有什么想法吗?
class InicioSesionGoogle: AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.google)}
var urlImagen : String
var variable1 = 1
fun showPhoto(url: String){
val photo = ImageView(applicationContext)
Picasso.get().load("$url").into(variable1)
photo.id = variable1
Scroll.addView(photo)
println("Photo set :D $url with the id of: $variable1")
variable1++
}
Xml:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="visible">
<ScrollView
android:id="@+id/ScrollVieww"
android:layout_width="310dp"
android:layout_height="204dp"
android:layout_marginTop="32dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout
android:id="@+id/Scroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" />
</ScrollView>
<ImageView
android:id="@+id/borramePerro"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:srcCompat="@tools:sample/avatars" />
</androidx.constraintlayout.widget.ConstraintLayout>
最好使用View.generateViewId()
为您的视图生成id,小数字可能已经被R占用了。
photo.id = View.generateViewId()
虽然您根本不需要 ID 来使用 Picasso,只需执行以下操作:
val photo = ImageView(context)
Picasso.get().load(url).into(photo)
由于您使用的是 Kotlin,因此您可能想看看 Coil。它比 Picasso 对 Kotlin 更友好。另外,请注意 "$url"
是无用的,可能是 CPU 的额外工作(当然微不足道)。
我尝试使用库“Picasso”,但它需要一个预先创建的 ImageView,我试图将它放入一个新的 ImageView,但是当我放入 id 时ImageView 会给我一个错误。
我正在使用此代码创建 ImageView:
val photo = ImageView(applicationContext)
photo.id = variable1
Scroll.addView(photo)
我正在使用这段代码来放置图像:
Picasso.get().load("$url").into(variable1)
这行不通,所以我认为将照片放入预先创建的 ImageView 中然后获取该 ImageView 的图像引用并将其提供给新的 ImageView 是一个好主意:
var photoResource = R.id.borramePerro.getResource()
photo.setImageResource(photoResource)
但是没用。有什么想法吗?
class InicioSesionGoogle: AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.google)}
var urlImagen : String
var variable1 = 1
fun showPhoto(url: String){
val photo = ImageView(applicationContext)
Picasso.get().load("$url").into(variable1)
photo.id = variable1
Scroll.addView(photo)
println("Photo set :D $url with the id of: $variable1")
variable1++
}
Xml:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="visible">
<ScrollView
android:id="@+id/ScrollVieww"
android:layout_width="310dp"
android:layout_height="204dp"
android:layout_marginTop="32dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<LinearLayout
android:id="@+id/Scroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" />
</ScrollView>
<ImageView
android:id="@+id/borramePerro"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:srcCompat="@tools:sample/avatars" />
</androidx.constraintlayout.widget.ConstraintLayout>
最好使用View.generateViewId()
为您的视图生成id,小数字可能已经被R占用了。
photo.id = View.generateViewId()
虽然您根本不需要 ID 来使用 Picasso,只需执行以下操作:
val photo = ImageView(context)
Picasso.get().load(url).into(photo)
由于您使用的是 Kotlin,因此您可能想看看 Coil。它比 Picasso 对 Kotlin 更友好。另外,请注意 "$url"
是无用的,可能是 CPU 的额外工作(当然微不足道)。