Android布局解决方案

时间:2015-08-07 18:54:51

标签: android android-layout

我正在努力使手机和平板电脑的布局相媲美。由于有许多不同的屏幕尺寸和分辨率,我想知道什么是实现如下所示的最佳方式。

enter image description here

底部横幅应保留纵横比,但仍可填充100%的屏幕宽度。 至于徽标,图像和按钮,它们需要尽可能接近,如所有设备上所示。

任何人都可以指出这个(相对/线性)布局的正确解决方案是什么,或者有不同的方法?

对不起,如果这个问题不合适我坚持几个小时找到最佳的正确显示方式。 :(

2 个答案:

答案 0 :(得分:1)

您可以以编程方式创建自己的星形视图,并将其用作背景,

def example(n):
     print n ** 10

将其用作背景,

public class StarLayout extends RelativeLayout {


 public StarLayout(Context context) {
  super(context);
 }

 public StarLayout(Context context, AttributeSet attrs) {
  super(context, attrs);
 }

 @SuppressLint("NewApi")
 public StarLayout(Context context, AttributeSet attrs, int defStyle) {
  super(context, attrs, defStyle);

 }



 @Override
 protected void onDraw(Canvas canvas) {

  Path clipPath = new Path();
  clipPath.addPath(Star());
  canvas.clipPath(clipPath);
  canvas.drawColor(Color.MAGENTA);

  super.onDraw(canvas);

 }


 private Path Star() {

  Path path = new Path();
  float midX = getWidth()/2;
  float midY = getHeight()/2;

  path.moveTo(midX, midY);
  path.lineTo(midX+190, midY+300);
  path.lineTo(midX, midY+210);
  path.lineTo(midX-190, midY+300);
  path.lineTo(midX-160, midY+90);
  path.lineTo(midX-300, midY-70);
  path.lineTo(midX-100 ,midY-110);
  path.lineTo(midX, midY-300);
  path.lineTo(midX+100, midY-110);
  path.lineTo(midX+300, midY-70);
  path.lineTo(midX+160, midY+90);
  path.lineTo(midX+190, midY+300);

  return path;

 }

原始来源:

http://balvinder788.blogspot.com/2015/01/star-shape-layout-designing-android.html

答案 1 :(得分:0)

我会做什么有一个父LinearLayout(垂直)然后在其中有两个LinearLayouts,一个用于容纳徽标,图像和按钮,另一个用于容纳横幅。这两个按钮应该在第一个内部布局中的各自的LinearLayout(水平)中。横幅应该有自己的。

制作第一个LinearLayout的高度" wrap_content"并制作横幅的LinearLayout高度" fill_parent"并将引力设置为" bottom"

下面的快速草拟示例,只需将Textview替换为您的徽标

即可
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/linearLayout1">
        <TextView
            android:text="Your Text"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/textView1"
            android:gravity="center" />
        <ImageView
            android:src="@android:drawable/ic_menu_gallery"
            android:layout_width="match_parent"
            android:layout_height="200dp"
            android:id="@+id/imageView2" />
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/linearLayout3"
            android:gravity="center">
            <Button
                android:text="Button"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:id="@+id/button1" />
            <Button
                android:text="Button"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:id="@+id/button2" />
        </LinearLayout>
    </LinearLayout>
    <LinearLayout
        android:orientation="vertical"
        android:minWidth="25px"
        android:minHeight="25px"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:background="#FFFFFF"
        android:id="@+id/linearLayout2"
        android:gravity="bottom">
        <ImageView
            android:src="@android:drawable/ic_menu_gallery"
            android:layout_width="match_parent"
            android:background="#000000"
            android:layout_height="wrap_content"
            android:id="@+id/imageView1" />
    </LinearLayout>
</LinearLayout>