【问题标题】:Making a wallpaper app in Kotlin. Can't seem to get the wallpaper to fit the user screen在 Kotlin 中制作壁纸应用程序。似乎无法让壁纸适合用户屏幕
【发布时间】:2020-05-28 04:00:40
【问题描述】:

我正在制作壁纸应用程序。我正在从我的 firebase 数据库中获取图像。但是当我在我的应用程序中点击设置为壁纸按钮时,壁纸会在顶部和底部留下一些空白的黑色空间。即使在 stackoverflow 上尝试了不同的类似答案后,它似乎也无法正常工作。

我的壁纸集活动:

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解释

【问题讨论】:

    标签: android firebase android-layout kotlin wallpaper


    【解决方案1】:

    由于 XML 文件中的边距,您得到了黑色空间。

     <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"/>
    

    这应该可以解决您的问题。

    【讨论】:

    • 非常感谢。它解决了这个问题。不敢相信我错过了。再次感谢
    • 乐于助人 ;)
    猜你喜欢
    • 2014-05-10
    • 1970-01-01
    • 1970-01-01
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多