Android drawable仅具有一dpi的图像

时间:2019-04-17 18:46:49

标签: android android-drawable

如果我只有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代码。

2 个答案:

答案 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