fix layout for diff screens
git-svn-id: https://osmand.googlecode.com/svn/trunk@432 e29c36b1-1cfa-d876-8d93-3434fc2bb7b8
This commit is contained in:
parent
16091c2846
commit
5461e726a6
3 changed files with 43 additions and 8 deletions
22
OsmAnd/res/layout-large/main.xml
Normal file
22
OsmAnd/res/layout-large/main.xml
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="fill_parent">
|
||||||
|
<com.osmand.views.OsmandMapTileView android:id="@+id/MapView" android:layout_width="fill_parent" android:layout_height="fill_parent"></com.osmand.views.OsmandMapTileView>
|
||||||
|
<com.osmand.views.OsmZoomControls android:id="@+id/ZoomControls"
|
||||||
|
android:layout_marginRight="8dp" android:layout_marginBottom="6dp"
|
||||||
|
android:layout_width="120dp" android:layout_height="wrap_content" android:layout_gravity="bottom|right"/>
|
||||||
|
|
||||||
|
<ImageButton android:layout_gravity="bottom|left" android:id="@+id/BackToMenu" android:background="@drawable/back_menu"
|
||||||
|
android:layout_width="96dp" android:layout_height="96dp"/>
|
||||||
|
<ImageButton android:layout_gravity="top|right" android:layout_marginTop="96dp" android:id="@+id/BackToLocation" android:background="@drawable/back_location"
|
||||||
|
android:layout_width="64dp" android:layout_height="64dp"/>
|
||||||
|
|
||||||
|
<LinearLayout android:layout_width="wrap_content" android:id="@+id/RouteLayout" android:orientation="horizontal" android:layout_height="wrap_content" android:layout_gravity="bottom|center" android:layout_marginBottom="12dp">
|
||||||
|
<Button android:layout_width="wrap_content" android:id="@+id/PreviousButton" android:layout_height="wrap_content" android:background="@android:drawable/ic_media_previous"/>
|
||||||
|
<Button android:layout_width="wrap_content" android:id="@+id/InfoButton" android:layout_height="wrap_content" android:background="@android:drawable/ic_dialog_info" android:layout_marginLeft="12dp"/>
|
||||||
|
<Button android:layout_width="wrap_content" android:id="@+id/NextButton" android:layout_height="wrap_content" android:background="@android:drawable/ic_media_next" android:layout_marginLeft="12dp" android:layout_marginRight="15dp"/>
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</FrameLayout>
|
|
@ -5,6 +5,7 @@
|
||||||
android:layout_height="fill_parent">
|
android:layout_height="fill_parent">
|
||||||
<com.osmand.views.OsmandMapTileView android:id="@+id/MapView" android:layout_width="fill_parent" android:layout_height="fill_parent"></com.osmand.views.OsmandMapTileView>
|
<com.osmand.views.OsmandMapTileView android:id="@+id/MapView" android:layout_width="fill_parent" android:layout_height="fill_parent"></com.osmand.views.OsmandMapTileView>
|
||||||
<com.osmand.views.OsmZoomControls android:id="@+id/ZoomControls"
|
<com.osmand.views.OsmZoomControls android:id="@+id/ZoomControls"
|
||||||
|
android:layout_marginRight="3dp" android:layout_marginBottom="2dp"
|
||||||
android:layout_width="100dp" android:layout_height="wrap_content" android:layout_gravity="bottom|right"/>
|
android:layout_width="100dp" android:layout_height="wrap_content" android:layout_gravity="bottom|right"/>
|
||||||
|
|
||||||
<ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|left" android:id="@+id/BackToMenu" android:background="@drawable/back_menu"></ImageButton>
|
<ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|left" android:id="@+id/BackToMenu" android:background="@drawable/back_menu"></ImageButton>
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.osmand.views;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.graphics.Canvas;
|
import android.graphics.Canvas;
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
|
@ -11,8 +12,10 @@ import android.graphics.RectF;
|
||||||
import android.graphics.Paint.Style;
|
import android.graphics.Paint.Style;
|
||||||
import android.location.Location;
|
import android.location.Location;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.util.DisplayMetrics;
|
||||||
import android.view.Gravity;
|
import android.view.Gravity;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.WindowManager;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
@ -25,7 +28,8 @@ import com.osmand.activities.RoutingHelper.RouteDirectionInfo;
|
||||||
|
|
||||||
public class RouteInfoLayer implements OsmandMapLayer, IRouteInformationListener {
|
public class RouteInfoLayer implements OsmandMapLayer, IRouteInformationListener {
|
||||||
|
|
||||||
private final int TEXT_SIZE = 150;
|
private static final int BASE_TEXT_SIZE = 150;
|
||||||
|
private int textSize = BASE_TEXT_SIZE;
|
||||||
|
|
||||||
private OsmandMapTileView view;
|
private OsmandMapTileView view;
|
||||||
private final RoutingHelper routingHelper;
|
private final RoutingHelper routingHelper;
|
||||||
|
@ -44,6 +48,8 @@ public class RouteInfoLayer implements OsmandMapLayer, IRouteInformationListener
|
||||||
|
|
||||||
private Paint paintLightBorder;
|
private Paint paintLightBorder;
|
||||||
|
|
||||||
|
private DisplayMetrics dm;
|
||||||
|
|
||||||
public RouteInfoLayer(RoutingHelper routingHelper, LinearLayout layout){
|
public RouteInfoLayer(RoutingHelper routingHelper, LinearLayout layout){
|
||||||
this.routingHelper = routingHelper;
|
this.routingHelper = routingHelper;
|
||||||
this.layout = layout;
|
this.layout = layout;
|
||||||
|
@ -67,7 +73,7 @@ public class RouteInfoLayer implements OsmandMapLayer, IRouteInformationListener
|
||||||
Location l = routingHelper.getLocationFromRouteDirection(info);
|
Location l = routingHelper.getLocationFromRouteDirection(info);
|
||||||
if(info.descriptionRoute != null){
|
if(info.descriptionRoute != null){
|
||||||
textView.setText(info.descriptionRoute);
|
textView.setText(info.descriptionRoute);
|
||||||
textView.layout(0, 0, TEXT_SIZE, (int) ((textView.getPaint().getTextSize()+4) * textView.getLineCount()));
|
textView.layout(0, 0, textSize, (int) ((textView.getPaint().getTextSize()+4) * textView.getLineCount()));
|
||||||
}
|
}
|
||||||
view.getAnimatedDraggingThread().startMoving(view.getLatitude(), view.getLongitude(),
|
view.getAnimatedDraggingThread().startMoving(view.getLatitude(), view.getLongitude(),
|
||||||
l.getLatitude(), l.getLongitude(),
|
l.getLatitude(), l.getLongitude(),
|
||||||
|
@ -89,7 +95,7 @@ public class RouteInfoLayer implements OsmandMapLayer, IRouteInformationListener
|
||||||
Location l = routingHelper.getLocationFromRouteDirection(info);
|
Location l = routingHelper.getLocationFromRouteDirection(info);
|
||||||
if(info.descriptionRoute != null){
|
if(info.descriptionRoute != null){
|
||||||
textView.setText(info.descriptionRoute);
|
textView.setText(info.descriptionRoute);
|
||||||
textView.layout(0, 0, TEXT_SIZE, (int) ((textView.getPaint().getTextSize() + 4) * textView.getLineCount()));
|
textView.layout(0, 0, textSize, (int) ((textView.getPaint().getTextSize() + 4) * textView.getLineCount()));
|
||||||
}
|
}
|
||||||
view.getAnimatedDraggingThread().startMoving(view.getLatitude(), view.getLongitude(),
|
view.getAnimatedDraggingThread().startMoving(view.getLatitude(), view.getLongitude(),
|
||||||
l.getLatitude(), l.getLongitude(),
|
l.getLatitude(), l.getLongitude(),
|
||||||
|
@ -128,6 +134,11 @@ public class RouteInfoLayer implements OsmandMapLayer, IRouteInformationListener
|
||||||
@Override
|
@Override
|
||||||
public void initLayer(OsmandMapTileView view) {
|
public void initLayer(OsmandMapTileView view) {
|
||||||
this.view = view;
|
this.view = view;
|
||||||
|
dm = new DisplayMetrics();
|
||||||
|
WindowManager wmgr = (WindowManager) view.getContext().getSystemService(Context.WINDOW_SERVICE);
|
||||||
|
wmgr.getDefaultDisplay().getMetrics(dm);
|
||||||
|
textSize = (int) (BASE_TEXT_SIZE * dm.density);
|
||||||
|
|
||||||
uiHandler = new Handler();
|
uiHandler = new Handler();
|
||||||
border = new RectF();
|
border = new RectF();
|
||||||
paintBorder = new Paint();
|
paintBorder = new Paint();
|
||||||
|
@ -142,20 +153,21 @@ public class RouteInfoLayer implements OsmandMapLayer, IRouteInformationListener
|
||||||
paintBlack.setAntiAlias(true);
|
paintBlack.setAntiAlias(true);
|
||||||
|
|
||||||
textView = new TextView(view.getContext());
|
textView = new TextView(view.getContext());
|
||||||
LayoutParams lp = new LayoutParams(TEXT_SIZE, LayoutParams.WRAP_CONTENT);
|
LayoutParams lp = new LayoutParams(textSize, LayoutParams.WRAP_CONTENT);
|
||||||
textView.setLayoutParams(lp);
|
textView.setLayoutParams(lp);
|
||||||
textView.setTextSize(16);
|
textView.setTextSize(16);
|
||||||
textView.setTextColor(Color.argb(255, 0, 0, 0));
|
textView.setTextColor(Color.argb(255, 0, 0, 0));
|
||||||
textView.setMinLines(1);
|
textView.setMinLines(1);
|
||||||
textView.setMaxLines(4);
|
textView.setMaxLines(4);
|
||||||
textView.setGravity(Gravity.CENTER_HORIZONTAL);
|
textView.setGravity(Gravity.CENTER_HORIZONTAL);
|
||||||
textBorder = new RectF(-2, -1, TEXT_SIZE + 2, 0);
|
textBorder = new RectF(-2, -1, textSize + 2, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDraw(Canvas canvas) {
|
public void onDraw(Canvas canvas) {
|
||||||
if(isVisible()){
|
if(isVisible()){
|
||||||
border.set(layout.getLeft() - 10, layout.getTop() - 3, layout.getRight() - 8, layout.getBottom() + 3);
|
border.set(layout.getLeft() - 10 * dm.density, layout.getTop() - 4 * dm.density,
|
||||||
|
layout.getRight() - 5 * dm.density, layout.getBottom() + 4 * dm.density);
|
||||||
canvas.drawRoundRect(border, 5, 5, paintBorder);
|
canvas.drawRoundRect(border, 5, 5, paintBorder);
|
||||||
canvas.drawRoundRect(border, 5, 5, paintBlack);
|
canvas.drawRoundRect(border, 5, 5, paintBlack);
|
||||||
List<RouteDirectionInfo> dir = routingHelper.getRouteDirections();
|
List<RouteDirectionInfo> dir = routingHelper.getRouteDirections();
|
||||||
|
@ -178,7 +190,7 @@ public class RouteInfoLayer implements OsmandMapLayer, IRouteInformationListener
|
||||||
textView.draw(canvas);
|
textView.draw(canvas);
|
||||||
if (c == 0) {
|
if (c == 0) {
|
||||||
// special case relayout after on draw method
|
// special case relayout after on draw method
|
||||||
textView.layout(0, 0, TEXT_SIZE, (int) ((textView.getPaint().getTextSize() + 4) * textView.getLineCount()));
|
textView.layout(0, 0, textSize, (int) ((textView.getPaint().getTextSize() + 4) * textView.getLineCount()));
|
||||||
view.refreshMap();
|
view.refreshMap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue