2011-07-28 4 views
17

android OS 1.5以降のカスタムカレンダーデイビューを開発したいと思います。androidのカスタムカレンダーDayview

アンドロイドの日カレンダーやイベントに似ています。&日の表示に追加します。

例やソースがある場合は、私に教えてください。

開始方法はわかりません。私を案内してください。

私はリンク以下のとおり月ビューを行っている:ので、私を助けてください

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

が、私はまた、一日のビューを作成する必要があります。

私はこれを表示したい:

enter image description here

+0

の下にあなたが答えをしてくださいダニできるように、あなたはそれを行うことができますか。$?緑のダニのためだけに:P –

+0

Hiiii Nik 私はあなたの質問を見て、それからansを得ました。私は最初のscreenshot.ifを与えられたようなものです同じ日のビューを作る必要があります。私もこのカレンダーを理解できない。 – Google

+0

あなたはこれをお探しですか? http://stackoverflow.com/questions/6080307/how-to-display-a-calendar-ui-in-an-android-applicationこの方法で、カレンダービューをカスタマイズできます。 **編集**また、http://code.google.com/p/android-wheel/downloads/listやhttp://code.google.com/のようなカスタムデイピーカーを作ることもできます。com/p/android-wheel/source/browse /#svn%2Ftrunk%2Fwheel%253Fstate%253Dloosed – Dharmendra

答えて

26

私はちょうどこの上で働いていた:あなたは

を開始すること青写真検討することもでき

Preview

小さな質問:誰かが自分のチュートリアルやものを投稿できる場所を教えてもらえますか?一番いいところは何ですか?

Googleカレンダーを使用することができます
/** 
* @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

<?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> 

/レイアウト/ 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> 
+0

良い答え!あなたのチュートリアルとコードを共有することについてのあなたの質問について... androidsnippets [ドット] com – SERPRO

+0

ありがとう :)非常に –

+0

チュートリアルを共有していただきありがとうございます、私は質問をしたい場合は、 eventview.iだけを書いて、eventview.iで書き込みます。drwableにeventbg.xmlを追加しました – Google

0

(私はそのクールなアイディアであるが、私自身のサイトの支払いをしたいいけません)あなたの新しいカレンダーを表示するために、あなた自身のイベントを作成することができます。以下は、新しいカレンダーを作成するためのクラスです。

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; 
    } 

} 

メインアクティビティでは、カレンダーの追加を呼び出してカレンダーを作成し、このカレンダーに予定を追加することができます。このカレンダーを削除するために

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); 
    } 

public void delCal(View view){ 
     ContentResolver crv = getContentResolver(); 
     crv.delete(cancelUri, null, null); 
    } 
関連する問題