我遇到了一个我无法解决的问题.我正在使用MediaPlayer类来播放视频; 但是,我总是失去原有的宽高比.这里提到了媒体播放器代码和xml代码.我尝试了很多东西,但仍然无法解决问题.我需要保持原始的宽高比.我已经在Android Manifest文件中将此活动声明为全屏.我还在媒体播放器代码之后附加了xml代码.请建议我.
private class ErrorListener implements OnErrorListener {
// FIXME: @Override
public boolean onError(MediaPlayer mp, int what, int extra) {
String message = "Unknown error";
switch (what) {
case MediaPlayer.MEDIA_ERROR_UNKNOWN:
message = "Unable to play media";
showError(message);
break;
case MediaPlayer.MEDIA_ERROR_SERVER_DIED:
message = "Server failed";
showError(message);
break;
case MediaPlayer.MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK:
message = "Invalid media";
showError(message);
break;
}
return false;
}
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.videoview);
Intent intent = getIntent();
uri = intent.getData();
new loadMovie().execute();
mPreview = (SurfaceView) …Run Code Online (Sandbox Code Playgroud) 以下代码在 Firefox 和 Chrome 中运行良好,但不适用于Safari(在 Mac 和 iPad 上测试):http : //jsfiddle.net/eFd87/。
<div id="wrapper">
<div id="content">
<img src="http://farm3.staticflickr.com/2783/4106818782_cc6610db2c.jpg">
</div>
</div>
#wrapper {
position: relative;
padding-bottom: 33.33%; /* Set ratio here */
height: 0;
}
#content {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: green;
text-align: center;
}
#content img {
max-height: 100%;
}?
Run Code Online (Sandbox Code Playgroud)
目标是让包装 div 保持固定的纵横比(在我的 Web 应用程序中它是一个轮播),并且其中的图像调整大小以适应 div(和中心)。
在 Safari 上,图像不显示,因为height: 0(这将使 img 的高度为 0)。带有height: 100%图像显示但不适合 …
我试图在Canvas我的背景中定位元素。
窗口重新调整大小以保持纵横比。背景随着窗口大小而拉伸。
问题是一旦窗口重新调整大小,元素位置就不正确。如果窗口稍微调整大小,元素会稍微调整它们的大小并且仍然在正确的位置,但如果窗口调整大小使其大小加倍,则定位完全关闭。
到目前为止,我使用了Grid,但也无济于事。这是 XAML
<Window x:Class="CanvasTEMP.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" ResizeMode="CanResizeWithGrip" SizeToContent="WidthAndHeight" MinHeight="386" MinWidth="397.5" Name="MainWindow1"
xmlns:c="clr-namespace:CanvasTEMP" Loaded="onLoad" WindowStartupLocation="CenterScreen" Height="386" Width="397.5" WindowStyle="None" AllowsTransparency="True" Topmost="True" Opacity="0.65">
<ItemsControl ItemsSource="{Binding}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Canvas Height="77" Width="218">
<Label Content="{Binding OwnerData.OwnerName}" Height="36" Canvas.Left="8" Canvas.Top="55" Width="198" Padding="0" HorizontalAlignment="Left" HorizontalContentAlignment="Center" VerticalAlignment="Center"/>
</Canvas>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas>
<Canvas.Background>
<ImageBrush ImageSource="Resources\default_mapping.png" Stretch="Uniform"/>
</Canvas.Background>
</Canvas>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style TargetType="ContentPresenter">
<Setter Property="Canvas.Left" Value="{Binding OwnerData.left}" />
<Setter Property="Canvas.Top" Value="{Binding OwnerData.top}" />
</Style>
</ItemsControl.ItemContainerStyle>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)
用于数据绑定的类
public class Owner …Run Code Online (Sandbox Code Playgroud) 如何使用图像比例从谷歌搜索图像?
我可以使用图像比率使用谷歌进行图像搜索吗?
search-engine aspect-ratio google-search google-image-search
标题中所有答案的99.9%如下:
当你搜索
List<Camera.Size>,由Camera.Parameters#getSupportedPictureSizes()提供时,尝试找到与通过Camera.Parameters.html#setPreviewSize(int,int)设置的相机预览大小相同的宽高比的大小,或者尽可能接近尽可能.
这很好,但是如果我找不到与预览尺寸相同的宽高比的图片尺寸(Android不能保证对于相机支持的每个预览尺寸都有相同宽高比的图片尺寸),和所有其他图片尺寸(尽可能接近)只是拉伸我的照片,如此和这个问题?即使在Camera.Parameters中设置的图片大小和预览大小具有不同的宽高比,我如何制作与预览完全相同的宽高比的照片?
我的目标是通过 .ggplot2 修复绘图的坐标纵横比coord_fixed()。我认为coord_fixed(ratio=1)独立于 x 轴或 y 轴的比例完成了这项工作。我的直觉:参数ratio是指坐标x的总范围与总范围的比值坐标y的。暗示比率为 1 总是意味着 x 轴将与图中的 y 轴一样长。
然而,对于 1000 秒的 x 坐标和 y 坐标(例如百分比),coord_fixed 的行为并不像我预期的那样。
2 问题:
这是一个插图
library("ggplot2")
set.seed(123)
df = data.frame(x=runif(11)*1000,y=seq(0,.5,.05))
ggplot(df, aes(x,y)) +geom_point() +coord_fixed(1)
Run Code Online (Sandbox Code Playgroud)
产生

通过 coord-fixed 中 x 和 y 值的比率重新缩放数据解决了这个问题
ggplot(df, aes(x,y)) +geom_point() +coord_fixed(1*max(df$x)/max(df$y))
Run Code Online (Sandbox Code Playgroud)
然而,这不是程序性的。我必须df$x手动指定才能达到预期的效果。请参阅问题 2:是否有一种明智的方法可以coord_fixed根据我的 ggplot 图中 x/y 轴上的数据自动重新缩放坐标?

我是android的菜鸟。我关于18:9设备可用高度的问题。当我尝试在这些纵横比中获得可用的屏幕时,我的应用程序可以正常运行所有android设备,但是何时?在三星银河s8中编译它不起作用。我正在尝试获取可用的设备屏幕。我已经尝试过这些链接中的方法
https://android-developers.googleblog.com/2017/03/update-your-app-to-take-advantage-of.html
我动态地使用
DisplayMetrics metrics = this.getResources().getDisplayMetrics();
width = metrics.widthPixels;
height = metrics.heightPixels ;
我试过了
private int getSoftButtonsBarHeight() {
// getRealMetrics is only available with API 17 and +
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int usableHeight = metrics.heightPixels;
getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
int realHeight = metrics.heightPixels;
if (realHeight > usableHeight)
return realHeight - usableHeight;
else
return 0;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试设置参数MATCH_PARENT的高度时,它工作得很好。但是我需要找到可用的高度像素来按比例设计其他视图。
实际上,这些代码DisplayMetrics metrics = this.getResources().getDisplayMetrics();
height = metrics.heightPixels ;在我的Activity中有效,但是当我尝试在另一个窗口(从FramaLayout扩展并添加到Activity中)中使用它时,则无法正常工作。
这是我的代码块
public class StudentLoginActivity …Run Code Online (Sandbox Code Playgroud) 这是最奇怪的事情,我以前曾多次使用过这种方法,但现在它似乎对我来说不起作用。
这是一个重复的问题,提供了此方法作为答案:
但由于某种未知的原因,它在 Firefox 和 Chrome 中对我来说是崩溃的。据我所知,它是根据我应用样式的元素的父元素计算填充...
在这种情况下,它不会查看.test,而是查看.parent计算填充:
.parent {
width: 200px;
}
.test {
width: 50px;
background: red;
padding-top: 100%;
}Run Code Online (Sandbox Code Playgroud)
<div class='parent'>
<div class='test'></div>
</div>Run Code Online (Sandbox Code Playgroud)
特尔;博士:
我无法在宽屏 (13:6) 手机上将图像准确地绘制到全屏上。如果我观察安全区域,错误是(可预测的)欠扫描。使用.edgesIgnoringSafeArea()(出乎意料地)在另一个方向上走得太远了。
更新
Apple DTS 建议这是一个错误,向我退还了一次支持事件,并邀请我提交错误报告。https://feedbackassistant.apple.com/feedback/8192204正在筹备中
警告讲师
我的假设.scaledToFill可能是错误的。我在最后解决这个问题。
代码
所以基本的我可以把它放在这里,它甚至不会减慢你的速度
struct ContentView: View {
var body: some View {
Image("testImage").resizable().scaledToFill()
// .edgesIgnoringSafeArea(.all)
}
}
Run Code Online (Sandbox Code Playgroud)
测试图像
测试图像是一个横向矩形,比例为 13:6,就像宽屏手机一样。(例如原始 iPhone X 的 812:375 比例。)灰色边缘不是图像的一部分。
它标有其子框架,对应于窄(旧)手机 (16:9) 和打击垫 (4:3)。
运行时结果
Xcode 项目设置明确仅限横向,适用于平板电脑和手机。
对于窄手机和所有键盘,上面的代码,观察安全区域,像我期望的那样呈现测试图像:
但是在宽屏手机上,我无法让红色矩形与屏幕边缘重合。
宽电话
随着无调用.edgesIgnoringSafeArea(),这是我们正在观察安全区域。自然地,我们的图像被映射到全屏的一个子集。
随着对 的调用.edgesIgnoringSafeArea()。我希望这能完全填满屏幕,但它会过度扫描:
这是 Xcode 视图层次结构调试器对上一个的看法:图像被映射到一个比全屏大的矩形。为什么?
事件顺序
如果我颠倒修饰符的顺序,并.edgesIgnoringSafeArea() 在之前 调用.scaledToFill(),我会得到纵横比失真,这.scaledToFill()应该可以防止。(请参阅屏幕截图中的圆变成椭圆。)解释这些操作是如何组成的,以及它们为什么不通勤,可能对回答我的主要问题大有帮助。
解决方法
我认为上述应该有效,我不明白为什么不行。什么做 …
我有一个带有颜色条和图例的图。我想将图例放置在绘图之外的颜色栏右侧。为了实现此目的,我使用 bbox_to_anchor 参数,但这会导致图例被截断:
import matplotlib.pyplot as plt
import numpy as np
from scipy.stats import norm
_, ax = plt.subplots()
extent = np.r_[0, 1, 0, 1]
space = np.linspace(0, 1)
probs = np.array([[norm.cdf(x + y) for x in space] for y in space])
colormap = ax.imshow(probs, aspect="auto", origin="lower", extent=extent, alpha=0.5)
colorbar = plt.colorbar(colormap, ax=ax)
colorbar.set_label(f"Probability")
ax.scatter(
[0.2, 0.4, 0.6], [0.8, 0.6, 0.4], color="r", label="Labeled Points",
)
plt.legend(loc="center left", bbox_to_anchor=(1.3, 0.5))
plt.title
plt.show()
Run Code Online (Sandbox Code Playgroud)

为了修复图例,我在 plt.show() 之前插入对 plt.tight_layout() 的调用,但这会导致纵横比扭曲:

如何显示整个图例并保留轴的纵横比?
python visualization data-visualization matplotlib aspect-ratio
aspect-ratio ×10
android ×3
css ×2
browser-bugs ×1
c# ×1
canvas ×1
display ×1
ggplot2 ×1
image ×1
layout ×1
matplotlib ×1
media-player ×1
plot ×1
position ×1
python ×1
r ×1
responsive ×1
safari ×1
swiftui ×1
wpf ×1