Back to project page AndroidSlidingUpPanel-foursquare-map-demo.
The source code is released under:
Apache License
If you think the Android project AndroidSlidingUpPanel-foursquare-map-demo listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
/** * Copyright 2014-present Amberfog/*from ww w . j a v a 2 s.com*/ * * 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.amberfog.mapslidingtest.app; import android.app.Activity; import android.app.FragmentTransaction; import android.content.Context; import android.location.Criteria; import android.location.Location; import android.location.LocationManager; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import com.google.android.gms.maps.CameraUpdate; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.MapFragment; import com.google.android.gms.maps.model.CameraPosition; import com.google.android.gms.maps.model.LatLng; import com.sothree.slidinguppanel.SlidingUpPanelLayout; import java.util.ArrayList; public class MainActivity extends Activity implements SlidingUpPanelLayout.PanelSlideListener { private ListView mListView; private SlidingUpPanelLayout mSlidingUpPanelLayout; private View mTransparentHeaderView; private View mTransparentView; private View mSpaceView; private MapFragment mMapFragment; private GoogleMap mMap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mListView = (ListView) findViewById(R.id.list); mListView.setOverScrollMode(ListView.OVER_SCROLL_NEVER); mSlidingUpPanelLayout = (SlidingUpPanelLayout) findViewById(R.id.slidingLayout); mSlidingUpPanelLayout.setEnableDragViewTouchEvents(true); int mapHeight = getResources().getDimensionPixelSize(R.dimen.map_height); mSlidingUpPanelLayout.setPanelHeight(mapHeight); // you can use different height here mSlidingUpPanelLayout.setScrollableView(mListView, mapHeight); mSlidingUpPanelLayout.setPanelSlideListener(this); // transparent view at the top of ListView mTransparentView = findViewById(R.id.transparentView); // init header view for ListView mTransparentHeaderView = LayoutInflater.from(this).inflate(R.layout.transparent_header_view, null, false); mSpaceView = mTransparentHeaderView.findViewById(R.id.space); ArrayList<String> testData = new ArrayList<String>(100); for (int i = 0; i < 100; i++) { testData.add("Item " + i); } mListView.addHeaderView(mTransparentHeaderView); mListView.setAdapter(new ArrayAdapter<String>(this, R.layout.simple_list_item, testData)); mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { mSlidingUpPanelLayout.collapsePane(); } }); collapseMap(); mMapFragment = MapFragment.newInstance(); FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); fragmentTransaction.add(R.id.mapContainer, mMapFragment, "map"); fragmentTransaction.commit(); setUpMapIfNeeded(); } private void setUpMapIfNeeded() { // Do a null check to confirm that we have not already instantiated the map. if (mMap == null) { // Try to obtain the map from the SupportMapFragment. mMap = mMapFragment.getMap(); // Check if we were successful in obtaining the map. if (mMap != null) { mMap.setMyLocationEnabled(true); mMap.getUiSettings().setCompassEnabled(false); mMap.getUiSettings().setZoomControlsEnabled(false); mMap.getUiSettings().setMyLocationButtonEnabled(false); CameraUpdate update = getLastKnownLocation(); if (update != null) { mMap.moveCamera(update); } } } } @Override protected void onResume() { super.onResume(); // In case Google Play services has since become available. setUpMapIfNeeded(); } private CameraUpdate getLastKnownLocation() { LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); Criteria criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_LOW); String provider = lm.getBestProvider(criteria, true); if (provider == null) { return null; } Location loc = lm.getLastKnownLocation(provider); if (loc != null) { return CameraUpdateFactory.newCameraPosition(CameraPosition.fromLatLngZoom(new LatLng(loc.getLatitude(), loc.getLongitude()), 14.0f)); } return null; } private void collapseMap() { mSpaceView.setVisibility(View.VISIBLE); mTransparentView.setVisibility(View.GONE); } private void expandMap() { mSpaceView.setVisibility(View.GONE); mTransparentView.setVisibility(View.INVISIBLE); } @Override public void onPanelSlide(View view, float v) { } @Override public void onPanelCollapsed(View view) { expandMap(); mMap.animateCamera(CameraUpdateFactory.zoomTo(14f), 1000, null); } @Override public void onPanelExpanded(View view) { collapseMap(); mMap.animateCamera(CameraUpdateFactory.zoomTo(11f), 1000, null); } @Override public void onPanelAnchored(View view) { } }