studio programacion para mejor gratis configurar como celular calendario app android calendar android-calendar

para - manual de programacion android pdf



Calendario personalizado vista del día en Android (3)

Quiero desarrollar una vista personalizada del día del calendario para Android OS 1.5 y versiones posteriores.

Al igual que en el calendario y evento del día de Android, agregar y mostrar en la vista del día.

Si tienes un ejemplo o una fuente de ello, por favor dame.

No tengo idea de cómo empezar. Por favor guíame.

He hecho la vista del mes según el siguiente enlace:

http://w2davids.wordpress.com/android-simple-calendar/

Pero también tengo que crear la vista del día, así que por favor, ayúdame.

Quiero mostrar esto:


Acabo de trabajar en esto:

Podrías considerarlo un plan para empezar.

/** * @author Sherif * * Copyright 2011 * * Sample Day Viewer that will show entries of each hour with ability to * add events and stuff * You should find a way to keep a container that will keep track of added events * */ public class DayViewActivity extends ListActivity { /** Called when the activity is first created. */ private static int HOURS_PER_DAY = 24; Context mContext = this; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //getListView().setBackgroundColor(Color.rgb(12, 12, 12)); getListView().setDividerHeight(0); setListAdapter(new ListAdapter(){ @Override public boolean areAllItemsEnabled() { // TODO Auto-generated method stub return false; } @Override public boolean isEnabled(int arg0) { // TODO Auto-generated method stub return false; } @Override public int getCount() { // TODO Auto-generated method stub return HOURS_PER_DAY; } @Override public Object getItem(int arg0) { // TODO Auto-generated method stub return null; } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return 0; } @Override public int getItemViewType(int arg0) { // TODO Auto-generated method stub return 0; } @Override public View getView(int position, View arg1, ViewGroup arg2) { // TODO Auto-generated method stub LayoutInflater inflater = getLayoutInflater(); View listItem = (View) inflater.inflate(R.layout.list_item, getListView(),false); TextView hourTV = (TextView) listItem.findViewById(R.id.hourTV); TextView amTV = (TextView) listItem.findViewById(R.id.amTV); hourTV.setTextColor(Color.BLUE); amTV.setTextColor(Color.BLUE); final LinearLayout eventsLL = (LinearLayout) listItem.findViewById(R.id.eventsLL); hourTV.setText(String.valueOf((position+9)%24)); //I set am/pm for each entry ... you could specify which entries if(((position>=0)&&(position<=2))||((position>=15)&&(position<=23))) amTV.setText("am"); else amTV.setText("pm"); eventsLL.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0) { // TODO Auto-generated method stub AlertDialog.Builder alert = new AlertDialog.Builder(mContext); alert.setTitle("New Event"); alert.setMessage("Event:"); // Set an EditText view to get user input final EditText input = new EditText(mContext); alert.setView(input); alert.setPositiveButton("Add", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { TextView A = new TextView(mContext); A.setText(input.getText()); A.setTextColor(Color.BLACK); eventsLL.addView(A); } }); alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { } }); alert.show(); } }); return listItem; } @Override public int getViewTypeCount() { // TODO Auto-generated method stub return 1; } @Override public boolean hasStableIds() { // TODO Auto-generated method stub return false; } @Override public boolean isEmpty() { // TODO Auto-generated method stub return false; } @Override public void registerDataSetObserver(DataSetObserver arg0) { // TODO Auto-generated method stub } @Override public void unregisterDataSetObserver(DataSetObserver arg0) { // TODO Auto-generated method stub } }); }

/ eventbg.xml / eventbg.xml

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#FFFFFF"/> <corners android:radius="5px"/> <padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp" /> </shape>

/ layout / list_item.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:paddingTop="5dip" android:paddingBottom="5dip" android:background="#CCC"> <LinearLayout android:id="@+id/linearLayout1" android:layout_height="fill_parent" android:layout_width="wrap_content" android:orientation="vertical"> <TextView android:id="@+id/hourTV" android:text="" android:textAppearance="?android:attr/textAppearanceSmall" android:layout_height="wrap_content" android:layout_width="wrap_content"/> <TextView android:id="@+id/amTV" android:text="" android:textAppearance="?android:attr/textAppearanceSmall" android:layout_height="wrap_content" android:layout_width="wrap_content"/> </LinearLayout> <LinearLayout android:id="@+id/LLdesign" android:orientation="horizontal" android:layout_height="fill_parent" android:layout_width="fill_parent" android:padding="3dip"> <LinearLayout android:id="@+id/eventsLL" android:orientation="vertical" android:layout_height="fill_parent" android:layout_width="fill_parent" android:background="@drawable/eventbg"></LinearLayout> </LinearLayout> </LinearLayout>


Puedes usar el calendario de Google para mostrar tu nuevo calendario y aquí puedes crear tus propios eventos. A continuación se muestra la clase para crear un nuevo calendario.

public class CalendarMapper { private static final String ACCOUNT_NAME = "private"; private static final String INT_NAME_PREFIX = "priv"; @SuppressLint("NewApi") private static Uri buildCalUri() { return CalendarContract.Calendars.CONTENT_URI .buildUpon() .appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true") .appendQueryParameter(Calendars.ACCOUNT_NAME, ACCOUNT_NAME) .appendQueryParameter(Calendars.ACCOUNT_TYPE, CalendarContract.ACCOUNT_TYPE_LOCAL) .build(); } private static ContentValues buildContentValues(Calendar calendar) { String dispName = "TUM3"; //Calendar.getName() returns a String String intName = INT_NAME_PREFIX + dispName; final ContentValues cv = new ContentValues(); cv.put(Calendars.ACCOUNT_NAME, ACCOUNT_NAME); cv.put(Calendars.ACCOUNT_TYPE, CalendarContract.ACCOUNT_TYPE_LOCAL); cv.put(Calendars.NAME, intName); cv.put(Calendars.CALENDAR_DISPLAY_NAME, dispName); //cv.put(Calendars.CALENDAR_COLOR, calendar.getColor()); //Calendar.getColor() returns int cv.put(Calendars.CALENDAR_ACCESS_LEVEL, Calendars.CAL_ACCESS_OWNER); cv.put(Calendars.OWNER_ACCOUNT, ACCOUNT_NAME); cv.put(Calendars.VISIBLE, 1); cv.put(Calendars.SYNC_EVENTS, 1); return cv; } @SuppressWarnings("deprecation") public static Uri addCalendar(Calendar calendar, ContentResolver cr) { if (calendar == null) throw new IllegalArgumentException(); final ContentValues cv = buildContentValues(calendar); Uri calUri = buildCalUri(); Uri cancelUri=cr.insert(calUri, cv); return cancelUri; } }

En la actividad principal, puede llamar a agregar calendario para crear un calendario y agregar un evento a este calendario.

Uri cancelUri; @SuppressLint("NewApi") public void displayCal(View view){ ContentResolver crv = getContentResolver(); Calendar calendar = Calendar.getInstance(); cancelUri= CalendarMapper.addCalendar(calendar, crv); long calID=2; //ID of the newly created calendar. You can query the calendars table to get the ID of your calendar long endMillis = 10100; Calendar beginTime = Calendar.getInstance(); beginTime.set(2012, 9, 14, 7, 30); long startMillis = beginTime.getTimeInMillis(); Calendar endTime = Calendar.getInstance(); endTime.set(2012, 9, 14, 8, 45); endMillis = endTime.getTimeInMillis(); ContentResolver cr = getContentResolver(); ContentValues values2 = new ContentValues(); values2.put(Events.DTSTART, startMillis); values2.put(Events.DTEND, endMillis); values2.put(Events.TITLE, "Jazzercise"); values2.put(Events.DESCRIPTION, "Group workout"); values2.put(Events.CALENDAR_ID, calID); values2.put(Events.EVENT_TIMEZONE, "America/Los_Angeles"); Uri uri = cr.insert(Events.CONTENT_URI, values2); Uri.Builder builder = CalendarContract.CONTENT_URI.buildUpon(); builder.appendPath("time"); ContentUris.appendId(builder, startMillis); Intent intent = new Intent(Intent.ACTION_VIEW) .setData(builder.build()); startActivity(intent); }

Para borrar este calendario, puedes hacerlo como abajo.

public void delCal(View view){ ContentResolver crv = getContentResolver(); crv.delete(cancelUri, null, null); }