如果我只有xhdpi
的图像,并且不想创建缩放图像,我希望android在屏幕密度低于xhdpi
时自动缩小,而在屏幕密度为xhdpi
时自动放大高于drawable-xhdpi
。我该如何实现?
我尝试创建drawable-xxhdpi
文件夹,然后将图像放入其中。但是,在布局编辑器中,该图像没有显示,将文件夹名称更改为xxhdpi
后,该图像出现了,但是太小了。
我想预览设备是xhdpi
,所以它不能使用windowBackground
中的图像,我想知道在真实设备中是否会发生同样的事情?
如果是这样,我如何只使用一个dpi图像,让系统自动缩放到其他dpi?
编辑:我忘了提到它在启动屏幕import play.api.libs.json.JsValue
import akka.actor.ActorSystem
import scala.concurrent.{Await, Future}
import scala.concurrent.duration.Duration
import scala.concurrent.ExecutionContext.Implicits.global
import play.api.libs.ws.StandaloneWSClient
import akka.stream.ActorMaterializer
import play.api.libs.ws.ahc.StandaloneAhcWSClient
import play.api.libs.ws.JsonBodyReadables._
import play.api.libs.json._
implicit val system: ActorSystem = ActorSystem()
system.registerOnTermination {
System.exit(0)
}
implicit val materializer: ActorMaterializer = ActorMaterializer()
def getAllRecApiResponses(urls: List[String])(
implicit actorSystem: ActorSystem,
materializer: ActorMaterializer): List[JsValue] = {
implicit val wsClient: StandaloneWSClient = StandaloneAhcWSClient()
val res: Future[List[JsValue]] = Future.traverse(urls)(urlString => {
wsClient.url(urlString).get().map(_.body[JsValue]).recover {
case ex: Exception => {
println( s"Url call returned exception for url $urlString: $ex" )
JsNull
}
}
}) andThen { case _ => wsClient.close() }
Await.result(res, Duration.Inf)
}
val result = getAllRecApiResponses(List.fill(10)("https://jsonplaceholder.typicode.com/todos/1"))
result foreach println
中用作图层列表中的位图项目,因为该应用尚未启动,因此无法在其中运行Java代码。
答案 0 :(得分:0)
您可以将可绘制对象放入{a: string | number, b: string | number}
文件夹中(没有任何密度限定符),然后使用适合您需要的ImageView.ScaleType
。
答案 1 :(得分:0)
如果您必须使用一张可以在不同密度和屏幕尺寸下很好地缩放的图像,那么可以使用SVG(可缩放矢量图形),它可以很好地缩放并且您不会看到像素化。
这里是有关Vector Drawables的所有信息
https://developer.android.com/studio/write/vector-asset-studio#when