Calendario personalizado dayview en android

Quiero desarrollar un calendario personalizado en la vista de día para el sistema operativo android 1.5 y más tarde.

Similar a android días calendario de eventos y agregar & pantalla en la vista de día.

Si usted tiene un ejemplo o fuente de la misma, a continuación, por favor, dame.

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

Me han hecho la vista de mes como al link de abajo:

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

pero tengo también para crear la vista de día, así que por favor me ayude.

Quiero mostrar este:

Calendario personalizado dayview en android

InformationsquelleAutor Nikhil | 2011-07-28

3 Kommentare

  1. 26

    He trabajado en esto:

    Calendario personalizado dayview en android

    Usted podría considerar la posibilidad de que 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
    
            }
    
        });
    }

    /imagen/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>

    /diseño/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>
    • buena respuesta! Sobre tu pregunta acerca de compartir tus tutoriales y código.. puede utilizar androidsnippets[dot]com
    • gracias por compartir los tutoriales y si no la mente, entonces quiero hacer preguntas no estoy recibiendo blanco de la fila después de escribir el evento.simplemente escriba solamente en listview.he añadido eventbg.xml en drwable
    • esta es realmente la parte posterior de edad cuando empecé desarrollo de android 🙁 el código está también mal jejeje. De todos modos voy a retirar después de trabajar y volver a usted
    • hey man u puede decirme cómo puedo añadir fila, como google calendar en la vista de día en su muestra?estoy tratando de gran cantidad de cambios, pero no puedo conseguir nada.hv u cualquier sugerencia para que?
    • Si el horario es de b/w 13:30 a 14:20 entonces cómo configurar este tipo de programas incluidos en este Día de la vista?
    • Supongo que se puede cambiar el modo de lista de la izquierda de los índices de acuerdo a la fecha/hora. Por supuesto, cuando uno agrega un evento, usted podría dejarle elegir un determinado tiempo (intervalo)
    • Si usted observa i.stack.imgur.com/mdzta.png esta es la programación es de b/w de 1:30 a 3:00 en caso de que los índices no se cambia el horario está programada b/w de ese intervalo de tiempo.Entonces, ¿cómo debemos hacer este tipo de Vista ?
    • Maestro De Sherif.!!
    • Es bueno para la Regla de tiempo de la vista.Si desea implementar con las buenas características por favor consulte este enlace code.google.com/p/iosched
    • Este código está trabajando muy bien en el emulador pero cuando estoy ejecutando en un dispositivo real , el aun no está recibiendo alimentación. en la vista de lista elemento . incapaz de averiguar el problema .

  2. 0

    puede utilizar el calendario de google con el fin de mostrar su nuevo calendario y más aquí usted puede crear sus propios eventos. Abajo está la clase para crear un calendario nuevo.

    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ñadir el calendario para crear un calendario y agregar un evento en el 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);
        }

    Con el fin de eliminar este calendario, usted puede hacerlo como el de abajo,

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

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea