Hello Friends,
Have you Searching for Android calender with WeekView.
Today I am sharing android tutorial for android custom calendar WeekView.
public class WeekView extends ActionBarActivity implements OnItemClickListener, OnClickListener {
private GridView mGrid;
private GregorianCalendar mCalendar;
private Date[] mWeek;
private TextView mMonthText;
private RelativeLayout mArrowRight;
private RelativeLayout mArrowLeft;
private CalendarAdapter mAdapter;
private SimpleDateFormat mFormatMonth = new SimpleDateFormat("MMMM");
private SimpleDateFormat mFormatDay = new SimpleDateFormat("d");
private SimpleDateFormat mFormatYear = new SimpleDateFormat("yyyy");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_week_view);
mGrid=(GridView)findViewById(R.id.gridview);
mGrid.setOnItemClickListener(this);
mMonthText=(TextView)findViewById(R.id.title);
mArrowLeft=(RelativeLayout)findViewById(R.id.previous);
mArrowLeft.setOnClickListener(this);
mArrowRight=(RelativeLayout)findViewById(R.id.next);
mArrowRight.setOnClickListener(this);
mCalendar = (GregorianCalendar)GregorianCalendar.getInstance();
mCalendar.setTime(new Date());
mCalendar.set(GregorianCalendar.DAY_OF_WEEK, GregorianCalendar.SUNDAY);
//mCalendar.add(Calendar.DAY_OF_YEAR, -7);
mCalendar.add(Calendar.DAY_OF_YEAR, 0);
mWeek=new Date[7];
for(int i=0;i<7;i++)
{
mWeek[i]=mCalendar.getTime();
//mCalendar.set(GregorianCalendar.DAY_OF_WEEK, GregorianCalendar.SUNDAY);
mCalendar.add(Calendar.DAY_OF_YEAR, 1);
}
setSelectedMonthText();
mAdapter=new CalendarAdapter(this, mWeek);
mGrid.setAdapter(mAdapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.week_view, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
private void setSelectedMonthText() {
String monthText;
if(Integer.parseInt(mFormatDay.format(mWeek[0]))>Integer.parseInt(mFormatDay.format(mWeek[6])))
monthText=mFormatMonth.format(mWeek[0])+" / "+mFormatMonth.format(mWeek[6]);
else
monthText=mFormatMonth.format(mWeek[0]);
mMonthText.setText(monthText+" "+mFormatYear.format(mWeek[6]));
}
private void addWeek()
{
for(int i=0;i<7;i++)
{
mWeek[i]=mCalendar.getTime();
mCalendar.add(Calendar.DAY_OF_YEAR, 1);
}
mAdapter.notifyDataSetChanged();
setSelectedMonthText();
//clearBackground();
}
private void subWeek()
{
mCalendar.add(Calendar.DAY_OF_YEAR, -14);
for(int i=0;i<7;i++)
{
mWeek[i]=mCalendar.getTime();
mCalendar.add(Calendar.DAY_OF_YEAR, 1);
}
setSelectedMonthText();
mAdapter.notifyDataSetChanged();
//clearBackground();
}
@Override
public void onClick(View v) {
switch(v.getId())
{
case R.id.previous:
subWeek();
break;
case R.id.next:
addWeek();
break;
}
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
}
}
Have you Searching for Android calender with WeekView.
Today I am sharing android tutorial for android custom calendar WeekView.
WeekView.java
public class WeekView extends ActionBarActivity implements OnItemClickListener, OnClickListener {
private GridView mGrid;
private GregorianCalendar mCalendar;
private Date[] mWeek;
private TextView mMonthText;
private RelativeLayout mArrowRight;
private RelativeLayout mArrowLeft;
private CalendarAdapter mAdapter;
private SimpleDateFormat mFormatMonth = new SimpleDateFormat("MMMM");
private SimpleDateFormat mFormatDay = new SimpleDateFormat("d");
private SimpleDateFormat mFormatYear = new SimpleDateFormat("yyyy");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_week_view);
mGrid=(GridView)findViewById(R.id.gridview);
mGrid.setOnItemClickListener(this);
mMonthText=(TextView)findViewById(R.id.title);
mArrowLeft=(RelativeLayout)findViewById(R.id.previous);
mArrowLeft.setOnClickListener(this);
mArrowRight=(RelativeLayout)findViewById(R.id.next);
mArrowRight.setOnClickListener(this);
mCalendar = (GregorianCalendar)GregorianCalendar.getInstance();
mCalendar.setTime(new Date());
mCalendar.set(GregorianCalendar.DAY_OF_WEEK, GregorianCalendar.SUNDAY);
//mCalendar.add(Calendar.DAY_OF_YEAR, -7);
mCalendar.add(Calendar.DAY_OF_YEAR, 0);
mWeek=new Date[7];
for(int i=0;i<7;i++)
{
mWeek[i]=mCalendar.getTime();
//mCalendar.set(GregorianCalendar.DAY_OF_WEEK, GregorianCalendar.SUNDAY);
mCalendar.add(Calendar.DAY_OF_YEAR, 1);
}
setSelectedMonthText();
mAdapter=new CalendarAdapter(this, mWeek);
mGrid.setAdapter(mAdapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.week_view, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
private void setSelectedMonthText() {
String monthText;
if(Integer.parseInt(mFormatDay.format(mWeek[0]))>Integer.parseInt(mFormatDay.format(mWeek[6])))
monthText=mFormatMonth.format(mWeek[0])+" / "+mFormatMonth.format(mWeek[6]);
else
monthText=mFormatMonth.format(mWeek[0]);
mMonthText.setText(monthText+" "+mFormatYear.format(mWeek[6]));
}
private void addWeek()
{
for(int i=0;i<7;i++)
{
mWeek[i]=mCalendar.getTime();
mCalendar.add(Calendar.DAY_OF_YEAR, 1);
}
mAdapter.notifyDataSetChanged();
setSelectedMonthText();
//clearBackground();
}
private void subWeek()
{
mCalendar.add(Calendar.DAY_OF_YEAR, -14);
for(int i=0;i<7;i++)
{
mWeek[i]=mCalendar.getTime();
mCalendar.add(Calendar.DAY_OF_YEAR, 1);
}
setSelectedMonthText();
mAdapter.notifyDataSetChanged();
//clearBackground();
}
@Override
public void onClick(View v) {
switch(v.getId())
{
case R.id.previous:
subWeek();
break;
case R.id.next:
addWeek();
break;
}
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
}
}
activity_week_view.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/background"
android:orientation="vertical" >
<RelativeLayout
android:id="@+id/header"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/calendar_top" >
<RelativeLayout
android:id="@+id/previous"
android:layout_width="40dip"
android:layout_height="30dip"
android:layout_alignParentLeft="true" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@drawable/arrow_left" />
</RelativeLayout>
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="5dip"
android:textColor="#000000"
android:textSize="18dip"
android:textStyle="bold" />
<RelativeLayout
android:id="@+id/next"
android:layout_width="40dip"
android:layout_height="30dip"
android:layout_alignParentRight="true" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@drawable/arrow_right" />
</RelativeLayout>
</RelativeLayout>
<GridView
android:id="@+id/gridview"
android:layout_below="@+id/header"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:listSelector="@android:color/transparent"
android:numColumns="7"
android:stretchMode="columnWidth" />
<LinearLayout
android:id="@+id/text"
android:layout_below="@+id/gridview"
android:layout_width="match_parent"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
</RelativeLayout>
CalendarAdapter.java
public class CalendarAdapter extends BaseAdapter{
private Context mContext;
private Date[] mWeek;
private SimpleDateFormat mFormatNumber;
private View previousView;
public CalendarAdapter(Context _context, Date[] _week) {
Locale.setDefault(Locale.US);
mContext = _context;
mWeek = _week;
mFormatNumber = new SimpleDateFormat("d");
}
private static class ViewHolder {
public TextView tvNumber;
}
@Override
public int getCount() {
return mWeek.length;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
LayoutInflater vi = (LayoutInflater)this.mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = vi.inflate(R.layout.calendar_item, null);
holder = new ViewHolder();
holder.tvNumber = (TextView) convertView.findViewById(R.id.tv_number);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.tvNumber.setText(mFormatNumber.format(mWeek[position]));
return convertView;
}
public View setSelected(View view) {
if (previousView != null) {
previousView.setBackgroundResource(R.drawable.list_item_background);
}
previousView = view;
view.setBackgroundResource(R.drawable.calendar_cel_selectl);
return view;
}
}
calendar_item.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/calendar_cell"
android:gravity="center"
android:orientation="vertical"
android:padding="2dip" >
<TextView
android:gravity="center"
android:id="@+id/tv_number"
android:background="@null"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#0000D7"
android:textSize="14sp"
android:textStyle="bold" >
</TextView>
</LinearLayout>
Screenshot:
here is the Sample Code
Comments
Post a Comment