droidsonroids / workcation Goto Github PK
View Code? Open in Web Editor NEWMy Research & Development project I've done at Droids on Roids.
Home Page: https://www.thedroidsonroids.com/blog/android/workcation-app-part-1-fragments-custom-transition/
My Research & Development project I've done at Droids on Roids.
Home Page: https://www.thedroidsonroids.com/blog/android/workcation-app-part-1-fragments-custom-transition/
This is Error Log:
03-13 10:52:33.715 29549-29549/com.droidsonroids.workcation E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.droidsonroids.workcation, PID: 29549
java.lang.IllegalArgumentException: radius must be > 0
at android.graphics.RadialGradient.<init>(RadialGradient.java:57)
at android.graphics.drawable.GradientDrawable.ensureValidRect(GradientDrawable.java:938)
at android.graphics.drawable.GradientDrawable.draw(GradientDrawable.java:509)
at android.view.View.getDrawableRenderNode(View.java:15677)
at android.view.View.drawBackground(View.java:15625)
at android.view.View.draw(View.java:15348)
at android.view.View.updateDisplayListIfDirty(View.java:14254)
at android.view.View.getDisplayList(View.java:14284)
at android.view.View.draw(View.java:15069)
at android.view.ViewGroup.drawChild(ViewGroup.java:3533)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3327)
at android.view.View.draw(View.java:15376)
at android.widget.FrameLayout.draw(FrameLayout.java:652)
at android.view.View.updateDisplayListIfDirty(View.java:14254)
at android.view.View.getDisplayList(View.java:14284)
at android.view.View.draw(View.java:15069)
at android.view.ViewGroup.drawChild(ViewGroup.java:3533)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3327)
at android.view.View.updateDisplayListIfDirty(View.java:14246)
at android.view.View.getDisplayList(View.java:14284)
at android.view.View.draw(View.java:15069)
at android.view.ViewGroup.drawChild(ViewGroup.java:3533)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3327)
at android.view.View.updateDisplayListIfDirty(View.java:14246)
at android.view.View.getDisplayList(View.java:14284)
at android.view.View.draw(View.java:15069)
at android.view.ViewGroup.drawChild(ViewGroup.java:3533)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3327)
at android.view.View.draw(View.java:15376)
at android.widget.FrameLayout.draw(FrameLayout.java:652)
at android.support.v4.widget.NestedScrollView.draw(NestedScrollView.java:1768)
at android.view.View.updateDisplayListIfDirty(View.java:14254)
at android.view.View.getDisplayList(View.java:14284)
at android.view.View.draw(View.java:15069)
at android.view.ViewGroup.drawChild(ViewGroup.java:3533)
at android.support.design.widget.CoordinatorLayout.drawChild(CoordinatorLayout.java:1223)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3327)
at android.view.View.updateDisplayListIfDirty(View.java:14246)
at android.view.View.getDisplayList(View.java:14284)
at android.view.View.draw(View.java:15069)
at android.view.ViewGroup.drawChild(ViewGroup.java:3533)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3327)
at android.view.View.updateDisplayListIfDirty(View.java:14246)
at android.view.View.getDisplayList(View.java:14284)
at android.view.View.draw(View.java:15069)
at android.view.ViewGroup.drawChild(ViewGroup.java:3533)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3327)
at android.view.View.draw(View.java:15376)
at android.view.View.updateDisplayListIfDirty(View.java:14254)
at android.view.View.getDisplayList(View.java:14284)
at android.view.View.draw(View.java:15069)
at android.view.ViewGroup.drawChild(ViewGroup.java:3533)
at android.support.design.widget.CoordinatorLayout.drawChild(CoordinatorLayout.java:1223)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3327)
at android.view.View.updateDisplayListIfDirty(View.java:14246)
at android.view.View.getDisplayList(View.java:14284)
at android.view.View.draw(View.java:15069)
at android.view.ViewGroup.drawChild(ViewGroup.java:3533)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3327)
at android.view.View.updateDisplayListIfDirty(View.java:14246)
at android.view.View.getDisplayList(View.java:14284)
at android.view.View.draw(View.java:15069)
at android.view.ViewGroup.drawChild(ViewGroup.java:3533)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3327)
at android.view.View.updateDisplayListIfDirty(View.java:14246)
at android.view.View.getDisplayList(View.java:14284)
at android.view.View.draw(View.java:15069)
at android.view.ViewGroup.drawChild(ViewGroup.java:353
I have implemented google map clusters and I want scale animation in the marker clusters, please see the video, I want the same animation which is present in the video. I have tried the animation but it is not playing the same. Please can you guide me how can i implement in my below code
My requirement is : please see the video. [https://files.fm/f/vtg2pge5]
public class CustomMarkerClusteringDemoActivity extends BaseMapActivity implements
ClusterManager.OnClusterClickListener<Person>,ClusterManager.OnClusterInfoWindowClickListener<Person>,
ClusterManager.OnClusterItemClickListener<Person>,ClusterManager.OnClusterItemInfoWindowClickListener<Person> {
private ClusterManager<Person> mClusterManager;
private Random mRandom = new Random(1984);
@Override
public boolean onClusterClick(Cluster<Person> cluster) {
// Show a toast with some info when the cluster is clicked.
String firstName = cluster.getItems().iterator().next().name;
Log.e("firstName","="+firstName);
return true;
}
@Override
public void onClusterInfoWindowClick(Cluster<Person> cluster) {
// Does nothing, but you could go to a list of the users.
Log.e("onClusterInfoWindow","onClusterInfoWindowClick");
}
@Override
public boolean onClusterItemClick(Person item) {
// Does nothing, but you could go into the user's profile page, for example.
String firstName = item.name;
Log.e("onClusterItemClick","="+firstName);
return true;
}
@Override
public void onClusterItemInfoWindowClick(Person item) {
// Does nothing, but you could go into the user's profile page, for example.
Log.e("onClusterItemInfoWindow","onClusterItemInfoWindow");
}
@Override
protected void startDemo() {
getMap().moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(51.503186, -0.126446), 9.5f));
mClusterManager = new ClusterManager<Person>(this, getMap());
mClusterManager.setRenderer(new PersonRenderer());
getMap().setOnCameraIdleListener(mClusterManager);
getMap().setOnMarkerClickListener(mClusterManager);
getMap().setOnInfoWindowClickListener(mClusterManager);
mClusterManager.setOnClusterClickListener(this);
mClusterManager.setOnClusterInfoWindowClickListener(this);
mClusterManager.setOnClusterItemClickListener(this);
mClusterManager.setOnClusterItemInfoWindowClickListener(this);
mClusterManager.setAnimation(false);
addItems();
mClusterManager.cluster();
getAllMarkers();
}
private void addItems() {
// http://www.flickr.com/photos/sdasmarchives/5036248203/
mClusterManager.addItem(new Person(position(), "Walter", R.drawable.ic_profile_dumy));
// http://www.flickr.com/photos/usnationalarchives/4726917149/
mClusterManager.addItem(new Person(position(), "Gran", R.drawable.ic_profile_dumy));
// http://www.flickr.com/photos/nypl/3111525394/
mClusterManager.addItem(new Person(position(), "Ruth", R.drawable.ic_profile_dumy));
// http://www.flickr.com/photos/smithsonian/2887433330/
mClusterManager.addItem(new Person(position(), "Stefan", R.drawable.ic_profile_dumy));
// http://www.flickr.com/photos/library_of_congress/2179915182/
mClusterManager.addItem(new Person(position(), "Mechanic", R.drawable.ic_profile_dumy));
// http://www.flickr.com/photos/nationalmediamuseum/7893552556/
mClusterManager.addItem(new Person(position(), "Yeats", R.drawable.ic_profile_dumy));
// http://www.flickr.com/photos/sdasmarchives/5036231225/
mClusterManager.addItem(new Person(position(), "John", R.drawable.ic_profile_dumy));
// http://www.flickr.com/photos/anmm_thecommons/7694202096/
mClusterManager.addItem(new Person(position(), "Trevor the Turtle", R.drawable.ic_profile_dumy));
// http://www.flickr.com/photos/usnationalarchives/4726892651/
mClusterManager.addItem(new Person(position(), "Teach", R.drawable.ic_profile_dumy));
}
private LatLng position() {
return new LatLng(random(51.6723432, 51.38494009999999), random(0.148271, -0.3514683));
}
private double random(double min, double max) {
return mRandom.nextDouble() * (max - min) + min;
}
/**
* Draws profile photos inside markers (using IconGenerator).
* When there are multiple people in the cluster, draw multiple photos (using MultiDrawable).
*/
private class PersonRenderer extends DefaultClusterRenderer<Person> {
private final IconGenerator mIconGenerator = new IconGenerator(getApplicationContext());
private final IconGenerator mClusterIconGenerator = new IconGenerator(getApplicationContext());
private final ImageView mImageView;
private final ImageView mClusterImageView;
private final int mDimension;
public PersonRenderer() {
super(getApplicationContext(), getMap(), mClusterManager);
View multiProfile = getLayoutInflater().inflate(R.layout.multi_profile, null);
mClusterIconGenerator.setContentView(multiProfile);
mClusterImageView = multiProfile.findViewById(R.id.image);
mImageView = new ImageView(getApplicationContext());
mDimension = (int) getResources().getDimension(R.dimen.custom_profile_image);
mImageView.setLayoutParams(new ViewGroup.LayoutParams(mDimension, mDimension));
int padding = (int) getResources().getDimension(R.dimen.custom_profile_padding);
mImageView.setPadding(padding, padding, padding, padding);
mIconGenerator.setContentView(mImageView);
}
@Override
protected void onBeforeClusterItemRendered(Person person, MarkerOptions markerOptions) {
// Draw a single person.
// Set the info window to show their name.
mImageView.setImageResource(person.profilePhoto);
Bitmap icon = mIconGenerator.makeIcon();
markerOptions.icon(BitmapDescriptorFactory.fromBitmap(icon)).title(person.name);
}
@Override
protected void onBeforeClusterRendered(Cluster<Person> cluster, MarkerOptions markerOptions) {
// Draw multiple people.
// Note: this method runs on the UI thread. Don't spend too much time in here (like in this example).
List<Drawable> profilePhotos = new ArrayList<Drawable>(Math.min(4, cluster.getSize()));
int width = mDimension;
int height = mDimension;
for (Person p : cluster.getItems()) {
// Draw 4 at most.
if (profilePhotos.size() == 4)
break;
Drawable drawable = getResources().getDrawable(p.profilePhoto);
drawable.setBounds(0, 0, width, height);
profilePhotos.add(drawable);
}
MultiDrawable multiDrawable = new MultiDrawable(profilePhotos);
multiDrawable.setBounds(0, 0, width, height);
mClusterImageView.setImageDrawable(multiDrawable);
Bitmap icon = mClusterIconGenerator.makeIcon(String.valueOf(cluster.getSize()));
markerOptions.icon(BitmapDescriptorFactory.fromBitmap(icon));
}
@Override
protected boolean shouldRenderAsCluster(Cluster cluster) {
// Always render clusters.
//start clustering if at least 2 items overlap
return cluster.getSize() > 1;
}
}
Plus, when pressing the bottom tab, it crashes:
04-11 10:56:04.706 7293-7293/com.droidsonroids.workcation E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.droidsonroids.workcation, PID: 7293
java.lang.NullPointerException: Attempt to read from field 'java.util.Map android.transition.TransitionValues.values' on a null object reference
at com.droidsonroids.workcation.common.transitions.ScaleDownImageTransition.createAnimator(ScaleDownImageTransition.java:66)
at android.transition.Transition.createAnimators(Transition.java:732)
at android.transition.TransitionSet.createAnimators(TransitionSet.java:396)
at android.transition.Transition.playTransition(Transition.java:1777)
at android.transition.TransitionManager$MultiListener.onPreDraw(TransitionManager.java:306)
at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:944)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2205)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1254)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6338)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:874)
at android.view.Choreographer.doCallbacks(Choreographer.java:686)
at android.view.Choreographer.doFrame(Choreographer.java:621)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:860)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6121)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.