Android Open Source - Mapyst Location Balloon






From Project

Back to project page Mapyst.

License

The source code is released under:

Apache License

If you think the Android project Mapyst listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright (C) 2013 Mapyst//  w w  w . j  a va2 s . c  o m
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.mapyst.android.ui.map;

import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.Path;
import android.graphics.RectF;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.mapyst.android.R;

@SuppressLint("ViewConstructor")
public class LocationBalloon extends LinearLayout {

  private Paint rectPaint;
  private Paint arrowPaint;
    private Paint rectOutlinePaint;

  private LocationButtonClickListener onButtonClickListener;

  public interface LocationButtonClickListener {
    public void startClicked();

    public void endClicked();

    public void cancelClicked();
  }

  public LocationBalloon(Context context, String location, LocationButtonClickListener onButtonClickListener) {
    super(context);
    init(context, location, onButtonClickListener);
  }

  public void init(Context context, String location, LocationButtonClickListener onButtonClickListener) {

    this.onButtonClickListener = onButtonClickListener;

    this.setOrientation(LinearLayout.VERTICAL);
    this.setWillNotDraw(false);
    this.setPadding(0, 0, 0, 20);

    rectPaint = new Paint();
    rectPaint.setStyle(Style.FILL);
    rectPaint.setColor(Color.argb(255, 0x66, 0x7F, 0xB2));

    arrowPaint = new Paint();
    arrowPaint.setColor(Color.argb(255, 0x32, 0x42, 0x63));

    rectOutlinePaint = new Paint();
    rectOutlinePaint.setColor(Color.argb(255, 0x32, 0x42, 0x63));

    rectOutlinePaint.setStyle(Style.STROKE);
    rectOutlinePaint.setStrokeWidth(10);

        Paint arrowOutlinePaint = new Paint();
    arrowOutlinePaint.setColor(Color.BLACK);
    arrowOutlinePaint.setStyle(Paint.Style.STROKE);
    arrowOutlinePaint.setStrokeWidth(3);

    TextView textView = new TextView(context);
    textView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
    textView.setGravity(Gravity.CENTER);
    textView.setTextColor(Color.argb(255, 0xFF, 0xFF, 0xFF));
    textView.setText(location);
    textView.setPadding(10, 10, 10, 5);
    this.addView(textView);

    LinearLayout buttonLayout = new LinearLayout(context);
    buttonLayout.setOrientation(LinearLayout.HORIZONTAL);
    buttonLayout.setGravity(Gravity.CENTER_HORIZONTAL);
    buttonLayout.setPadding(10, 0, 10, 10);

    Button startButton = new Button(context);
    startButton.setText("Set As Start");

    startButton.setBackgroundDrawable(getResources().getDrawable(R.drawable.latlng_button_drawable));
    startButton.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        LocationBalloon.this.onButtonClickListener.startClicked();
      }
    });
    buttonLayout.addView(startButton);

    Button endButton = new Button(context);
    endButton.setBackgroundDrawable(getResources().getDrawable(R.drawable.latlng_button_drawable));
    endButton.setText("Set As End");
    endButton.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        LocationBalloon.this.onButtonClickListener.endClicked();
      }
    });
    buttonLayout.addView(endButton);

    this.addView(buttonLayout);
  }

  @SuppressLint("DrawAllocation")
  @Override
  public void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    // the arrow that points to where the geopoint is
    Path arrow = new Path();
    arrow.moveTo(this.getWidth() / 2, this.getHeight());
    arrow.lineTo(this.getWidth() / 2 - 20, this.getHeight() - 20);
    arrow.lineTo(this.getWidth() / 2 + 20, this.getHeight() - 20);
    arrow.lineTo(this.getWidth() / 2, this.getHeight());
    arrow.close();

    RectF r = new RectF(0, 0, this.getWidth(), this.getHeight() - 20);
    canvas.drawRoundRect(r, 10, 10, rectPaint);

    canvas.drawRoundRect(r, 10, 10, rectOutlinePaint);

    canvas.drawPath(arrow, arrowPaint);
  }
}




Java Source Code List

com.mapyst.FileHandlerInterface.java
com.mapyst.android.AndroidFileHandler.java
com.mapyst.android.CampusLoader.java
com.mapyst.android.Compass.java
com.mapyst.android.DirectionsList.java
com.mapyst.android.Images.java
com.mapyst.android.LocationFinder.java
com.mapyst.android.MainScreen.java
com.mapyst.android.Mapyst.java
com.mapyst.android.Settings.java
com.mapyst.android.Splash.java
com.mapyst.android.asynctask.CampusLoaderTaskPrefs.java
com.mapyst.android.asynctask.CampusLoaderTask.java
com.mapyst.android.asynctask.RouteMakerTaskPrefs.java
com.mapyst.android.asynctask.RouteMakerTask.java
com.mapyst.android.ui.CenteredToastFactory.java
com.mapyst.android.ui.CompassOverlay.java
com.mapyst.android.ui.DirectionIcon.java
com.mapyst.android.ui.DirectionsListAdapter.java
com.mapyst.android.ui.DirectionsListItem.java
com.mapyst.android.ui.DrawingHelpers.java
com.mapyst.android.ui.Icon.java
com.mapyst.android.ui.LocationsAdapter.java
com.mapyst.android.ui.LocationsListView.java
com.mapyst.android.ui.RouteMapOverlay.java
com.mapyst.android.ui.SlidingScrollView.java
com.mapyst.android.ui.map.AnimatedMapZoomer.java
com.mapyst.android.ui.map.LocationBalloon.java
com.mapyst.android.ui.map.LocationChooserOverlay.java
com.mapyst.android.ui.map.MapUtils.java
com.mapyst.android.ui.map.MapViewLimiter.java
com.mapyst.android.ui.map.MapViewMover.java
com.mapyst.android.ui.map.OnMapTouchLimiterListener.java
com.mapyst.android.ui.map.PriorityMapView.java
com.mapyst.android.ui.map.ViewItemOverlay.java
com.mapyst.campus.Building.java
com.mapyst.campus.Campus.java
com.mapyst.campus.Floor.java
com.mapyst.campus.ListOfCampuses.java
com.mapyst.campus.Location_Type.java
com.mapyst.campus.Location.java
com.mapyst.route.Arc.java
com.mapyst.route.DataParser.java
com.mapyst.route.Direction.java
com.mapyst.route.DistanceCalculator.java
com.mapyst.route.GraphNode.java
com.mapyst.route.InterpretResult.java
com.mapyst.route.InterpretedInfo.java
com.mapyst.route.Interpreter.java
com.mapyst.route.LatLngPoint.java
com.mapyst.route.Prioritizable.java
com.mapyst.route.PriorityQ.java
com.mapyst.route.RouteFinder.java
com.mapyst.route.RoutePreferences.java
com.mapyst.route.Route.java
com.mapyst.route.ShortestPath.java
com.mapyst.route.Waypoint2D.java
com.mapyst.route.WaypointID.java
com.markupartist.android.widget.ActionBar.java
com.markupartist.android.widget.ScrollingTextView.java