If you think the Android project vitdroid-android 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
package com.googlecode.android.widgets.DateSlider.labeler;
//fromwww.java2s.comimport java.util.Calendar;
import android.content.Context;
import android.graphics.Typeface;
import android.util.TypedValue;
import android.view.Gravity;
import com.googlecode.android.widgets.DateSlider.TimeObject;
import com.googlecode.android.widgets.DateSlider.timeview.TimeTextView;
import com.googlecode.android.widgets.DateSlider.timeview.TimeView;
/**
* A customized Labeler that displays weeks using a CustomTimeTextView
*/publicclass WeekLabeler extends Labeler {
privatefinal String mFormatString;
public WeekLabeler(String formatString) {
super(120, 60);
mFormatString = formatString;
}
@Override
public TimeObject add(long time, int val) {
return timeObjectfromCalendar(Util.addWeeks(time, val));
}
/**
* We implement this as custom code rather than a method in Util because there
* is no format string that shows the week of the year as an integer, so we just
* format the week directly rather than extracting it from a Calendar object.
*/
@Override
protected TimeObject timeObjectfromCalendar(Calendar c) {
int week = c.get(Calendar.WEEK_OF_YEAR);
int day_of_week = c.get(Calendar.DAY_OF_WEEK)-1;
// set calendar to first millisecond of the week
c.add(Calendar.DAY_OF_MONTH,-day_of_week);
c.set(Calendar.HOUR_OF_DAY,0);c.set(Calendar.MINUTE,0);c.set(Calendar.SECOND,0);
c.set(Calendar.MILLISECOND, 0);
long startTime = c.getTimeInMillis();
// set calendar to last millisecond of the week
c.add(Calendar.DAY_OF_WEEK, 6);
c.set(Calendar.HOUR_OF_DAY,23);c.set(Calendar.MINUTE,59);c.set(Calendar.SECOND,59);
c.set(Calendar.MILLISECOND, 999);
long endTime = c.getTimeInMillis();
returnnew TimeObject(String.format(mFormatString,week), startTime, endTime);
}
/**
* create our customized TimeTextView and return it
*/public TimeView createView(Context context, boolean isCenterView) {
returnnew CustomTimeTextView(context, isCenterView, 25);
}
/**
* Here we define our Custom TimeTextView which will display the fonts in its very own way.
*/privatestaticclass CustomTimeTextView extends TimeTextView {
public CustomTimeTextView(Context context, boolean isCenterView, int textSize) {
super(context, isCenterView, textSize);
}
/**
* Here we set up the text characteristics for the TextView, i.e. red colour,
* serif font and semi-transparent white background for the centerView... and shadow!!!
*/
@Override
protectedvoid setupView(boolean isCenterView, int textSize) {
setGravity(Gravity.CENTER);
setTextColor(0xFF883333);
setTextSize(TypedValue.COMPLEX_UNIT_DIP, textSize);
setTypeface(Typeface.SERIF);
if (isCenterView) {
setTypeface(Typeface.create(Typeface.SERIF, Typeface.BOLD));
setBackgroundColor(0x55FFFFFF);
setShadowLayer(2.5f, 3, 3, 0xFF999999);
}
}
}
}