在 Kotlin 中制作壁纸应用程序。似乎无法获得适合用户屏幕的墙纸
Making a wallpaper app in Kotlin. Can't seem to get the wallpaper to fit the user screen
我正在制作壁纸应用程序。我正在从我的 firebase 数据库中获取图像。但是当我在我的应用程序中点击设置为墙纸按钮时,墙纸在顶部和底部留下一些空的黑色 space。即使在 Whosebug 上尝试了不同的类似答案后似乎也无法正常工作。
我的壁纸集activity:
import android.app.WallpaperManager
import android.content.Context
import android.graphics.Bitmap
import android.graphics.Canvas
import android.graphics.Point
import android.graphics.Rect
import android.os.Build
import android.os.Bundle
import android.view.WindowManager
import android.widget.Toast
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.drawToBitmap
import com.squareup.picasso.Picasso
import kotlinx.android.synthetic.main.activity_set_wallpaper.*
import java.io.IOException
class SetWallpaperActivity : AppCompatActivity() {
var image: String?=null
@RequiresApi(Build.VERSION_CODES.N)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_set_wallpaper)
val intent=intent
image=intent.getStringExtra("image")
Picasso.get().load(intent.getStringExtra("image")).into(image_set_wallpaper)
val wm = this.getSystemService(Context.WINDOW_SERVICE) as WindowManager
val display = wm.defaultDisplay
val size = Point()
display.getSize(size)
val height: Int = size.y
val width: Int = size.x
set_wallpaper.setOnClickListener {
val result:Bitmap=rl_iv.drawToBitmap()
val wallpaperManager = WallpaperManager.getInstance(this)
try {
wallpaperManager.setBitmap(result)
}
catch (ex: IOException) {
ex.printStackTrace()
}
}
set_lock_wallpaper.setOnClickListener {
val wpManager = WallpaperManager.getInstance(this)
val myBitmap: Bitmap = rl_iv.drawToBitmap()
try {
wpManager.setBitmap(myBitmap, null, true, WallpaperManager.FLAG_LOCK)
}
catch (ex: IOException) {
ex.printStackTrace()
}
}
}
}
它的xml代码是
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
tools:context=".SetWallpaperActivity">
<RelativeLayout
android:id="@+id/rl_iv"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/image_set_wallpaper"
android:layout_width="match_parent"
android:scaleType="fitXY"
android:layout_height="match_parent"
android:layout_marginBottom="20dp"
android:layout_marginTop="20dp"/>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="20dp"
android:orientation="horizontal">
<Button
android:id="@+id/set_wallpaper"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="SET as HOME SCREEN WALLPAPER"
android:layout_alignParentBottom="true"
android:layout_marginBottom="20dp"
android:background="@drawable/shape_button_rounded"
android:focusableInTouchMode="true"
android:gravity="center"/>
<Button
android:id="@+id/set_lock_wallpaper"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="SET as LOCK SCREEN WALLPAPER"
android:layout_alignParentBottom="true"
android:layout_toRightOf="@id/set_wallpaper"
android:background="@drawable/shape_button_rounded"
android:focusableInTouchMode="true"
android:layout_marginBottom="20dp"
android:gravity="center"/>
</LinearLayout>
</RelativeLayout>
请建议我应该在我的代码中编辑什么才能让它工作。我是新来的。请用Kotlin解释
由于 XML 文件中的边距,您得到黑色 space。
<ImageView
android:id="@+id/image_set_wallpaper"
android:layout_width="match_parent"
android:scaleType="fitXY"
android:layout_height="match_parent"
android:layout_marginBottom="20dp"
android:layout_marginTop="20dp"/>
删除 ImageView
属性中的 layout_margin-xx-
以获得所需的输出。
您在 XML 文件中的 ImageView
应该是这样的:
<ImageView
android:id="@+id/image_set_wallpaper"
android:layout_width="match_parent"
android:scaleType="fitXY"
android:layout_height="match_parent"/>
这应该可以解决您的问题。
我正在制作壁纸应用程序。我正在从我的 firebase 数据库中获取图像。但是当我在我的应用程序中点击设置为墙纸按钮时,墙纸在顶部和底部留下一些空的黑色 space。即使在 Whosebug 上尝试了不同的类似答案后似乎也无法正常工作。
我的壁纸集activity:
import android.app.WallpaperManager
import android.content.Context
import android.graphics.Bitmap
import android.graphics.Canvas
import android.graphics.Point
import android.graphics.Rect
import android.os.Build
import android.os.Bundle
import android.view.WindowManager
import android.widget.Toast
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.drawToBitmap
import com.squareup.picasso.Picasso
import kotlinx.android.synthetic.main.activity_set_wallpaper.*
import java.io.IOException
class SetWallpaperActivity : AppCompatActivity() {
var image: String?=null
@RequiresApi(Build.VERSION_CODES.N)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_set_wallpaper)
val intent=intent
image=intent.getStringExtra("image")
Picasso.get().load(intent.getStringExtra("image")).into(image_set_wallpaper)
val wm = this.getSystemService(Context.WINDOW_SERVICE) as WindowManager
val display = wm.defaultDisplay
val size = Point()
display.getSize(size)
val height: Int = size.y
val width: Int = size.x
set_wallpaper.setOnClickListener {
val result:Bitmap=rl_iv.drawToBitmap()
val wallpaperManager = WallpaperManager.getInstance(this)
try {
wallpaperManager.setBitmap(result)
}
catch (ex: IOException) {
ex.printStackTrace()
}
}
set_lock_wallpaper.setOnClickListener {
val wpManager = WallpaperManager.getInstance(this)
val myBitmap: Bitmap = rl_iv.drawToBitmap()
try {
wpManager.setBitmap(myBitmap, null, true, WallpaperManager.FLAG_LOCK)
}
catch (ex: IOException) {
ex.printStackTrace()
}
}
}
}
它的xml代码是
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
tools:context=".SetWallpaperActivity">
<RelativeLayout
android:id="@+id/rl_iv"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/image_set_wallpaper"
android:layout_width="match_parent"
android:scaleType="fitXY"
android:layout_height="match_parent"
android:layout_marginBottom="20dp"
android:layout_marginTop="20dp"/>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="20dp"
android:orientation="horizontal">
<Button
android:id="@+id/set_wallpaper"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="SET as HOME SCREEN WALLPAPER"
android:layout_alignParentBottom="true"
android:layout_marginBottom="20dp"
android:background="@drawable/shape_button_rounded"
android:focusableInTouchMode="true"
android:gravity="center"/>
<Button
android:id="@+id/set_lock_wallpaper"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="SET as LOCK SCREEN WALLPAPER"
android:layout_alignParentBottom="true"
android:layout_toRightOf="@id/set_wallpaper"
android:background="@drawable/shape_button_rounded"
android:focusableInTouchMode="true"
android:layout_marginBottom="20dp"
android:gravity="center"/>
</LinearLayout>
</RelativeLayout>
请建议我应该在我的代码中编辑什么才能让它工作。我是新来的。请用Kotlin解释
由于 XML 文件中的边距,您得到黑色 space。
<ImageView
android:id="@+id/image_set_wallpaper"
android:layout_width="match_parent"
android:scaleType="fitXY"
android:layout_height="match_parent"
android:layout_marginBottom="20dp"
android:layout_marginTop="20dp"/>
删除 ImageView
属性中的 layout_margin-xx-
以获得所需的输出。
您在 XML 文件中的 ImageView
应该是这样的:
<ImageView
android:id="@+id/image_set_wallpaper"
android:layout_width="match_parent"
android:scaleType="fitXY"
android:layout_height="match_parent"/>
这应该可以解决您的问题。