A Simple, Customizable VectorAnalogClock View for Android.
Resizable. Smooth movement. Tested on various screen sizes and densities. Supports Custom Vector Assets. Supports back to API 14.
dependencies {
implementation 'turki.alkhateeb:vectoranalogclock:1.0.0'
}
package com.turki.alwaysonlibrarycontainer;
import android.content.Context;
import android.os.Build;
import android.support.annotation.RequiresApi;
import android.util.AttributeSet;
import com.turki.vectoranalogclock.VectorAnalogClock;
public class MyVectorClock extends VectorAnalogClock{
private void init(){
//use this for the default Analog Clock (recommended)
initializeSimple();
//or use this if you want to use your own vector assets (not recommended)
//initializeCustom(faceResourceId, hourResourceId, minuteResourceId, secondResourceId);
}
//mandatory constructor
public MyVectorClock(Context ctx) {
super(ctx);
init();
}
// the other constructors are in case you want to add the view in XML
public MyVectorClock(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public MyVectorClock(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public MyVectorClock(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
init();
}
}
Note: XML attributes are not supported currently. Use WRAP_CONTENT for both width and height. Instead, use setDiameterInDp()
and setDiameterInPixels()
to control the size.
Add the view to XML or Java
<com.turki.alwaysonlibrarycontainer.MyVectorClock
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/clock"
android:layout_gravity="center"/>
In your Activity:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.HOUR,-2);
MyVectorClock vectorAnalogClock = findViewById(R.id.clock);
//customization
vectorAnalogClock.setCalendar(calendar)
.setDiameterInDp(400.0f)
.setOpacity(1.0f)
.setShowSeconds(true)
.setColor(Color.BLACK);
}
This will be the result:
That's it!! Have fun.
Twitter: @TurkiAlkhateeb