Articles of 纵横比

android ImageButton缩放并保持宽高比

我有一个屏幕,我试图布局… 基本上,我试图在屏幕上垂直均匀地分配4个ImageButton对象…我在这里使用这个来平均分配项目,但现在有一个可怕的时间让图像缩放,但保持高宽比…如果我使用scaleType="centerInside"他们没有规模,如果我使用“fitXY”他们不保持长宽比…这是什么布局看起来像: 这里是代码: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_margin="0dp" android:padding="0dp" android:orientation="vertical" android:weightSum="5" > <ImageButton android:id="@+id/share_song" android:layout_width="fill_parent" android:text="" android:layout_marginLeft="0dp" android:layout_marginTop="15dp" android:layout_marginRight="5dp" android:layout_marginBottom="5dp" android:gravity="left" android:src="@drawable/share_song_button_sel" android:adjustViewBounds="true" android:background="#0000" android:scaleType="fitXY" android:layout_height="0dp" android:layout_weight="1" /> <Button android:layout_width="wrap_content" android:text="" android:id="@+id/tag_a_song" android:layout_marginLeft="5dp" android:layout_marginTop="10dp" android:layout_marginRight="0dp" android:layout_marginBottom="5dp" android:gravity="right" android:layout_gravity="right" android:background="@drawable/song_check_in_button_sel" android:layout_height="0dp" android:layout_weight="1" /> <Button android:id="@+id/match_button" android:layout_width="wrap_content" android:text="" android:layout_marginLeft="0dp" android:layout_marginTop="10dp" android:layout_marginRight="0dp" android:layout_marginBottom="5dp" android:gravity="left" android:background="@drawable/music_match_button_sel" android:layout_height="0dp" android:layout_weight="1" /> […]

如何将ImageViewalignment底部,填充其宽度和高度,并保持其纵横比?

背景 ImageView具有各种XML属性来缩放其内容,以及允许放置视图和设置其大小的各种布局视图。 但是,我无法弄清楚如何在某些情况下很好地缩放imageView。 例如,将ImageView放置在底部(例如frameLayout)的底部,尽可能缩放其宽度,并保持高宽比(不裁剪)。 问题 没有find的组合,包括各种ScaleType值,adjustViewBounds,重力,… 好像ImageView会遗漏一些重要的ScaleType值。 我试过了 到目前为止,我唯一的解决scheme是将imageView设置为底部(使用重力设置为底部和中心水平),并使用代码,类似于: final ImageView logoBackgroundImageView = …; final LayoutParams layoutParams = logoBackgroundImageView.getLayoutParams(); final Options bitmapOptions = ImageService.getBitmapOptions(getResources(), R.drawable.splash_logo); final int screenWidth = getResources().getDisplayMetrics().widthPixels; layoutParams.height = bitmapOptions.outHeight * screenWidth / bitmapOptions.outWidth; logoBackgroundImageView.setLayoutParams(layoutParams); 这通常工作,并不需要太多的改变,以使它不工作时,它不是全屏,但我想知道是否有一个更简单的方法。 如果高度过大,可能无法使用,所以您可能需要对其进行更改,以便在发生这种情况时,将宽度设置得更小,以允许所有容器都适合。 这个问题 有没有一个解决scheme或库来解决与ImageView有关的各种问题? 编辑:这里是我想要做的示例图像,这次,在一个垂直的LinearLayout,在两个其他视图之间的边界ImageView中间: 正如您所看到的,在某些(或全部)预览中,中间图像alignment到右侧而不是停留在中间(水平)。 我希望它把所有的空间和缩放比例(保持高宽比),然后alignment到它所拥有的空间的底部。 这里是我尝试过的一个组合的示例XML: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FF339AE2"> <View […]

在Android中处理背景图片的不同屏幕分辨率

我的Android应用(基于文本的游戏)使用了很多背景图片,以提供更好的视觉氛围。 例如,如果游戏中的动作将你带入酒馆,那么你会在游戏中获得一个酒馆的背景图像。 这是一个巨大的改善,graphics,在无聊的黑色背景,否则你会得到。 但是,这也是一个问题,因为android:background总是延伸到屏幕的尺寸。 结果是如果玩家在纵向模式和横向模式之间切换,背景图像看起来非常糟糕。 更糟糕的是,许多设备的宽高比(如320×480 mdpi,480×800 hdpi和480×852 hdpi)都有很大差异,甚至还会有更多的变化。 别人怎么解决这个问题呢? 对于主分辨率/方向有单独的图像不是我的select,因为这会导致apk的增长过大。

Android:如何在animation中保持纵横比

我在imageview中运行的animation拒绝维持图像帧的纵横比。 在SO中的以下答案是相当丰富的,但似乎没有为我工作: 如何在ImageView中缩放图像,以保持长宽比 这里是代码: private void startAnimation(){ mImageView.setAdjustViewBounds(true); mImageView.setScaleType(ScaleType.CENTER); mImageView.setBackgroundResource(R.anim.my_animation); AnimationDrawable frameAnimation = (AnimationDrawable) mImageView.getBackground(); // Start the animation (looped playback by default). frameAnimation.start(); } R.anim.my_animation只是一个animation列表: <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/selected" android:oneshot="false"> <item android:drawable="@drawable/photo_1" android:duration="100" /> <item android:drawable="@drawable/photo__2" android:duration="100" /> … and so on… </animation-list>

在Unity中支持多种高宽比

我一直在试图创build一个支持Android和平板电脑的设备的每个纵横比的Unity 2D游戏。 有没有办法做到这一点,由Unity提供或推荐?

Unity 2D:如何在Unity 2D中支持多平台和不同宽高比的设备?

我是Unity 2D的新手,并在其中创build一个游戏。 我想在几乎所有的设备(Android,iOS,Mac,Windows和Web)上运行这个游戏,我有点好奇,看看Unity2D如何处理这种情况,并在各种设备上提供相同的用户体验。 另外我注意到,我可以预览我的游戏在不同的长宽比。 它是屏幕的宽高比(比如游戏在这种types的屏幕上的显示方式)还是相机(在所有屏幕上看起来都一样)? 我需要根据设备的分辨率提供不同的图像资源吗? 我应该做一些特别的事情来支持不同的分辨率,长宽比等吗? 任何帮助将不胜感激。

修复Android相机应用高宽比和旋转

它看起来如何: http : //i41.tinypic.com/30278m1.png 它看起来像在图片中,我希望它有一个正确的长宽比与正确的旋转 请看看代码,我该如何解决? 这是我的代码: public class MainActivity extends Activity implements SurfaceHolder.Callback { Camera mCamera; SurfaceView mPreview; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mPreview = (SurfaceView)findViewById(R.id.preview); mPreview.getHolder().addCallback(this); mPreview.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); mCamera = Camera.open(); } @Override public void onPause() { super.onPause(); mCamera.stopPreview(); } @Override public void onDestroy() { super.onDestroy(); mCamera.release(); } @Override public void […]

如何有一个圆形的,中心裁剪的imageView,而不创build一个新的位图?

注 :我知道有很多关于这个问题的问题和存储库,但似乎没有一个适合我尝试实现的东西。 背景 给定一个任何纵横比的位图,我希望将其设置为ImageView的内容(仅使用drawable而不扩展ImageView),以便内容将被中心裁剪,然后以圆形。 所有这一切,只需最less的内存使用,因为图像可能会相当大。 我不想为此创build一个全新的位图。 内容已经在那里… 问题 我发现的所有解决scheme都缺less我写的东西:有些不是中心裁剪,有的假设图像是方形的,有的是从给定的位图创build一个新的位图。 我试过了 除了尝试各种知识库之外,我已经尝试了这个教程 ,并试图解决非方形长宽比的情况,但是我失败了。 这里是它的代码,以防止网站被closures: public class RoundImage extends Drawable { private final Bitmap mBitmap; private final Paint mPaint; private final RectF mRectF; private final int mBitmapWidth; private final int mBitmapHeight; public RoundImage(Bitmap bitmap) { mBitmap = bitmap; mRectF = new RectF(); mPaint = new Paint(); mPaint.setAntiAlias(true); […]

VideoView匹配父母身高并保持宽高比

我有一个VideoView,它是这样设置的: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/player" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <VideoView android:id="@+id/video" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_centerInParent="true" android:layout_centerVertical="true" /> <ProgressBar android:id="@+id/loader" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" /> </RelativeLayout> 但VideoView匹配父容器的宽度,然后根据加载的电影的高宽比设置高度。 我想做相反的事情,我希望VideoView在保持宽高比不变的情况下与父级的高度相匹配,video将被裁剪。 我设法扩展VideoView来填充父级,但是不保持宽高比。 另一件事是,我将MediaController添加到VideoView是这样的: MediaController controllers = new MediaController(this) { @Override public void hide() { if (state != State.Hidden) { this.show(); } else { super.hide(); } } }; controllers.setAnchorView(videoView); videoView.setMediaController(controllers); videoView.setOnPreparedListener(new OnPreparedListener() { […]

Android转换Px到Dp(video长宽比)

可能重复: 在android中将像素转换为dp 我正在尝试将像素转换为dp。 什么是公式? 让我们把640和480转换成dp。 文档说这个 dp单位到屏幕像素的转换很简单:px = dp *(dpi / 160) 但我不认为这是我所需要的(我不知道如何使用这个)。 我想我只需要forumla。 我准备好了代码: DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); switch(metrics.densityDpi) { case DisplayMetrics.DENSITY_LOW: int sixForty = ? int fourEighty = ? break; case DisplayMetrics.DENSITY_MEDIUM: int sixForty = ? int fourEighty = ? break; case DisplayMetrics.DENSITY_HIGH: int sixForty = ? int fourEighty = ? […]