最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android學(xué)習(xí)教程之日歷庫使用(15)

 更新時(shí)間:2016年11月17日 09:41:13   作者:天風(fēng)隼  
這篇文章主要為大家詳細(xì)介紹了Android學(xué)習(xí)教程之日歷庫使用的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本教程為大家分享了Android日歷庫的使用方法,供大家參考,具體內(nèi)容如下

MainActivity.java代碼:

package siso.weekv;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends AppCompatActivity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

  findViewById(R.id.buttonBasic).setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
    Intent intent = new Intent(MainActivity.this, BasicActivity.class);
    startActivity(intent);
   }
  });

  findViewById(R.id.buttonAsynchronous).setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
    Intent intent = new Intent(MainActivity.this, AsynchronousActivity.class);
    startActivity(intent);
   }
  });
 }

}

AsynchronousActivity.java代碼:

package siso.weekv;

import android.widget.Toast;


import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import retrofit.Callback;
import retrofit.RestAdapter;
import retrofit.RetrofitError;
import retrofit.client.Response;
import siso.weekv.apiclient.Event;
import siso.weekv.apiclient.MyJsonService;
import siso.wvlib.WeekViewEvent;


/**
 * An example of how events can be fetched from network and be displayed on the week view.
 * Created by Raquib-ul-Alam Kanak on 1/3/2014.
 * Website: http://alamkanak.github.io
 */
public class AsynchronousActivity extends BaseActivity implements Callback<List<Event>> {

 private List<WeekViewEvent> events = new ArrayList<WeekViewEvent>();
 boolean calledNetwork = false;

 @Override
 public List<? extends WeekViewEvent> onMonthChange(int newYear, int newMonth) {

  // Download events from network if it hasn't been done already. To understand how events are
  // downloaded using retrofit, visit http://square.github.io/retrofit
  if (!calledNetwork) {
   RestAdapter retrofit = new RestAdapter.Builder()
     .setEndpoint("https://api.myjson.com/bins")
     .build();
   MyJsonService service = retrofit.create(MyJsonService.class);
   service.listEvents(this);
   calledNetwork = true;
  }

  // Return only the events that matches newYear and newMonth.
  List<WeekViewEvent> matchedEvents = new ArrayList<WeekViewEvent>();
  for (WeekViewEvent event : events) {
   if (eventMatches(event, newYear, newMonth)) {
    matchedEvents.add(event);
   }
  }
  return matchedEvents;
 }

 /**
  * Checks if an event falls into a specific year and month.
  * @param event The event to check for.
  * @param year The year.
  * @param month The month.
  * @return True if the event matches the year and month.
  */
 private boolean eventMatches(WeekViewEvent event, int year, int month) {
  return (event.getStartTime().get(Calendar.YEAR) == year && event.getStartTime().get(Calendar.MONTH) == month - 1) || (event.getEndTime().get(Calendar.YEAR) == year && event.getEndTime().get(Calendar.MONTH) == month - 1);
 }

 @Override
 public void success(List<Event> events, Response response) {
  this.events.clear();
  for (Event event : events) {
   this.events.add(event.toWeekViewEvent());
  }
  getWeekView().notifyDatasetChanged();
 }

 @Override
 public void failure(RetrofitError error) {
  error.printStackTrace();
  Toast.makeText(this, R.string.async_error, Toast.LENGTH_SHORT).show();
 }
}

BaseActivity.java

package siso.weekv;

import android.graphics.RectF;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.TypedValue;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;

import siso.wvlib.DateTimeInterpreter;
import siso.wvlib.MonthLoader;
import siso.wvlib.WeekView;
import siso.wvlib.WeekViewEvent;

public abstract class BaseActivity extends AppCompatActivity implements WeekView.EventClickListener, MonthLoader.MonthChangeListener, WeekView.EventLongPressListener, WeekView.EmptyViewLongPressListener {
 private static final int TYPE_DAY_VIEW = 1;
 private static final int TYPE_THREE_DAY_VIEW = 2;
 private static final int TYPE_WEEK_VIEW = 3;
 private int mWeekViewType = TYPE_THREE_DAY_VIEW;
 private WeekView mWeekView;


 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_base);

  // Get a reference for the week view in the layout.
  mWeekView = (WeekView) findViewById(R.id.weekView);

  // Show a toast message about the touched event.
  mWeekView.setOnEventClickListener(this);


  mWeekView.setMonthChangeListener(this);

  // Set long press listener for events.
  mWeekView.setEventLongPressListener(this);


  mWeekView.setEmptyViewLongPressListener(this);


  setupDateTimeInterpreter(false);
 }


 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  getMenuInflater().inflate(R.menu.main, menu);
  return true;
 }

 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
  int id = item.getItemId();
  setupDateTimeInterpreter(id == R.id.action_week_view);
  switch (id){
   case R.id.action_today:
    mWeekView.goToToday();
    return true;
   case R.id.action_day_view:
    if (mWeekViewType != TYPE_DAY_VIEW) {
     item.setChecked(!item.isChecked());
     mWeekViewType = TYPE_DAY_VIEW;
     mWeekView.setNumberOfVisibleDays(1);

     // Lets change some dimensions to best fit the view.
     mWeekView.setColumnGap((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 8, getResources().getDisplayMetrics()));
     mWeekView.setTextSize((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 12, getResources().getDisplayMetrics()));
     mWeekView.setEventTextSize((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 12, getResources().getDisplayMetrics()));
    }
    return true;
   case R.id.action_three_day_view:
    if (mWeekViewType != TYPE_THREE_DAY_VIEW) {
     item.setChecked(!item.isChecked());
     mWeekViewType = TYPE_THREE_DAY_VIEW;
     mWeekView.setNumberOfVisibleDays(3);

     // Lets change some dimensions to best fit the view.
     mWeekView.setColumnGap((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 8, getResources().getDisplayMetrics()));
     mWeekView.setTextSize((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 12, getResources().getDisplayMetrics()));
     mWeekView.setEventTextSize((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 12, getResources().getDisplayMetrics()));
    }
    return true;
   case R.id.action_week_view:
    if (mWeekViewType != TYPE_WEEK_VIEW) {
     item.setChecked(!item.isChecked());
     mWeekViewType = TYPE_WEEK_VIEW;
     mWeekView.setNumberOfVisibleDays(7);


     mWeekView.setColumnGap((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 2, getResources().getDisplayMetrics()));
     mWeekView.setTextSize((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 10, getResources().getDisplayMetrics()));
     mWeekView.setEventTextSize((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 10, getResources().getDisplayMetrics()));
    }
    return true;
  }

  return super.onOptionsItemSelected(item);
 }


 private void setupDateTimeInterpreter(final boolean shortDate) {
  mWeekView.setDateTimeInterpreter(new DateTimeInterpreter() {
   @Override
   public String interpretDate(Calendar date) {
    SimpleDateFormat weekdayNameFormat = new SimpleDateFormat("EEE", Locale.getDefault());
    String weekday = weekdayNameFormat.format(date.getTime());
    SimpleDateFormat format = new SimpleDateFormat(" M/d", Locale.getDefault());


    if (shortDate)
     weekday = String.valueOf(weekday.charAt(0));
    return weekday.toUpperCase() + format.format(date.getTime());
   }

   @Override
   public String interpretTime(int hour) {
    return hour > 11 ? (hour - 12) + " PM" : (hour == 0 ? "12 AM" : hour + " AM");
   }
  });
 }

 protected String getEventTitle(Calendar time) {
  return String.format("事件 %02d:%02d %s/%d", time.get(Calendar.HOUR_OF_DAY), time.get(Calendar.MINUTE), time.get(Calendar.MONTH)+1, time.get(Calendar.DAY_OF_MONTH));
 }

 @Override
 public void onEventClick(WeekViewEvent event, RectF eventRect) {
  Toast.makeText(this, "點(diǎn)擊 " + event.getName(), Toast.LENGTH_SHORT).show();
 }

 @Override
 public void onEventLongPress(WeekViewEvent event, RectF eventRect) {
  Toast.makeText(this, "長按事件: " + event.getName(), Toast.LENGTH_SHORT).show();
 }

 @Override
 public void onEmptyViewLongPress(Calendar time) {
  Toast.makeText(this, "空視圖長按: " + getEventTitle(time), Toast.LENGTH_SHORT).show();
 }

 public WeekView getWeekView() {
  return mWeekView;
 }
}

BasicActivity.java

package siso.weekv;


import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import siso.wvlib.WeekViewEvent;


public class BasicActivity extends BaseActivity {

 @Override
 public List<? extends WeekViewEvent> onMonthChange(int newYear, int newMonth) {
  // Populate the week view with some events.
  List<WeekViewEvent> events = new ArrayList<WeekViewEvent>();

  Calendar startTime = Calendar.getInstance();
  startTime.set(Calendar.HOUR_OF_DAY, 3);
  startTime.set(Calendar.MINUTE, 0);
  startTime.set(Calendar.MONTH, newMonth-1);
  startTime.set(Calendar.YEAR, newYear);
  Calendar endTime = (Calendar) startTime.clone();
  endTime.add(Calendar.HOUR, 1);
  endTime.set(Calendar.MONTH, newMonth-1);
  WeekViewEvent event = new WeekViewEvent(1, getEventTitle(startTime), startTime, endTime);
  event.setColor(getResources().getColor(R.color.event_color_01));
  events.add(event);

  startTime = Calendar.getInstance();
  startTime.set(Calendar.HOUR_OF_DAY, 3);
  startTime.set(Calendar.MINUTE, 30);
  startTime.set(Calendar.MONTH, newMonth-1);
  startTime.set(Calendar.YEAR, newYear);
  endTime = (Calendar) startTime.clone();
  endTime.set(Calendar.HOUR_OF_DAY, 4);
  endTime.set(Calendar.MINUTE, 30);
  endTime.set(Calendar.MONTH, newMonth-1);
  event = new WeekViewEvent(10, getEventTitle(startTime), startTime, endTime);
  event.setColor(getResources().getColor(R.color.event_color_02));
  events.add(event);

  startTime = Calendar.getInstance();
  startTime.set(Calendar.HOUR_OF_DAY, 4);
  startTime.set(Calendar.MINUTE, 20);
  startTime.set(Calendar.MONTH, newMonth-1);
  startTime.set(Calendar.YEAR, newYear);
  endTime = (Calendar) startTime.clone();
  endTime.set(Calendar.HOUR_OF_DAY, 5);
  endTime.set(Calendar.MINUTE, 0);
  event = new WeekViewEvent(10, getEventTitle(startTime), startTime, endTime);
  event.setColor(getResources().getColor(R.color.event_color_03));
  events.add(event);

  startTime = Calendar.getInstance();
  startTime.set(Calendar.HOUR_OF_DAY, 5);
  startTime.set(Calendar.MINUTE, 30);
  startTime.set(Calendar.MONTH, newMonth-1);
  startTime.set(Calendar.YEAR, newYear);
  endTime = (Calendar) startTime.clone();
  endTime.add(Calendar.HOUR_OF_DAY, 2);
  endTime.set(Calendar.MONTH, newMonth-1);
  event = new WeekViewEvent(2, getEventTitle(startTime), startTime, endTime);
  event.setColor(getResources().getColor(R.color.event_color_02));
  events.add(event);

  startTime = Calendar.getInstance();
  startTime.set(Calendar.HOUR_OF_DAY, 5);
  startTime.set(Calendar.MINUTE, 0);
  startTime.set(Calendar.MONTH, newMonth-1);
  startTime.set(Calendar.YEAR, newYear);
  startTime.add(Calendar.DATE, 1);
  endTime = (Calendar) startTime.clone();
  endTime.add(Calendar.HOUR_OF_DAY, 3);
  endTime.set(Calendar.MONTH, newMonth - 1);
  event = new WeekViewEvent(3, getEventTitle(startTime), startTime, endTime);
  event.setColor(getResources().getColor(R.color.event_color_03));
  events.add(event);

  startTime = Calendar.getInstance();
  startTime.set(Calendar.DAY_OF_MONTH, 15);
  startTime.set(Calendar.HOUR_OF_DAY, 3);
  startTime.set(Calendar.MINUTE, 0);
  startTime.set(Calendar.MONTH, newMonth-1);
  startTime.set(Calendar.YEAR, newYear);
  endTime = (Calendar) startTime.clone();
  endTime.add(Calendar.HOUR_OF_DAY, 3);
  event = new WeekViewEvent(4, getEventTitle(startTime), startTime, endTime);
  event.setColor(getResources().getColor(R.color.event_color_04));
  events.add(event);

  startTime = Calendar.getInstance();
  startTime.set(Calendar.DAY_OF_MONTH, 1);
  startTime.set(Calendar.HOUR_OF_DAY, 3);
  startTime.set(Calendar.MINUTE, 0);
  startTime.set(Calendar.MONTH, newMonth-1);
  startTime.set(Calendar.YEAR, newYear);
  endTime = (Calendar) startTime.clone();
  endTime.add(Calendar.HOUR_OF_DAY, 3);
  event = new WeekViewEvent(5, getEventTitle(startTime), startTime, endTime);
  event.setColor(getResources().getColor(R.color.event_color_01));
  events.add(event);

  startTime = Calendar.getInstance();
  startTime.set(Calendar.DAY_OF_MONTH, startTime.getActualMaximum(Calendar.DAY_OF_MONTH));
  startTime.set(Calendar.HOUR_OF_DAY, 15);
  startTime.set(Calendar.MINUTE, 0);
  startTime.set(Calendar.MONTH, newMonth-1);
  startTime.set(Calendar.YEAR, newYear);
  endTime = (Calendar) startTime.clone();
  endTime.add(Calendar.HOUR_OF_DAY, 3);
  event = new WeekViewEvent(5, getEventTitle(startTime), startTime, endTime);
  event.setColor(getResources().getColor(R.color.event_color_02));
  events.add(event);

  return events;
 }

}

apiclient文件夾下Event.java和MyJsonService.java

package siso.weekv.apiclient;

import android.annotation.SuppressLint;
import android.graphics.Color;


import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import siso.wvlib.WeekViewEvent;


public class Event {

 @Expose @SerializedName("name")
 private String mName;
 @Expose @SerializedName("dayOfMonth")
 private int mDayOfMonth;
 @Expose @SerializedName("startTime")
 private String mStartTime;
 @Expose @SerializedName("endTime")
 private String mEndTime;
 @Expose @SerializedName("color")
 private String mColor;

 public String getName() {
  return mName;
 }

 public void setName(String name) {
  this.mName = name;
 }

 public int getDayOfMonth() {
  return mDayOfMonth;
 }

 public void setDayOfMonth(int dayOfMonth) {
  this.mDayOfMonth = dayOfMonth;
 }

 public String getStartTime() {
  return mStartTime;
 }

 public void setStartTime(String startTime) {
  this.mStartTime = startTime;
 }

 public String getEndTime() {
  return mEndTime;
 }

 public void setEndTime(String endTime) {
  this.mEndTime = endTime;
 }

 public String getColor() {
  return mColor;
 }

 public void setColor(String color) {
  this.mColor = color;
 }

 @SuppressLint("SimpleDateFormat")
 public WeekViewEvent toWeekViewEvent(){

  // Parse time.
  SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
  Date start = new Date();
  Date end = new Date();
  try {
   start = sdf.parse(getStartTime());
  } catch (ParseException e) {
   e.printStackTrace();
  }
  try {
   end = sdf.parse(getEndTime());
  } catch (ParseException e) {
   e.printStackTrace();
  }

  // Initialize start and end time.
  Calendar now = Calendar.getInstance();
  Calendar startTime = (Calendar) now.clone();
  startTime.setTimeInMillis(start.getTime());
  startTime.set(Calendar.YEAR, now.get(Calendar.YEAR));
  startTime.set(Calendar.MONTH, now.get(Calendar.MONTH));
  startTime.set(Calendar.DAY_OF_MONTH, getDayOfMonth());
  Calendar endTime = (Calendar) startTime.clone();
  endTime.setTimeInMillis(end.getTime());
  endTime.set(Calendar.YEAR, startTime.get(Calendar.YEAR));
  endTime.set(Calendar.MONTH, startTime.get(Calendar.MONTH));
  endTime.set(Calendar.DAY_OF_MONTH, startTime.get(Calendar.DAY_OF_MONTH));

  // Create an week view event.
  WeekViewEvent weekViewEvent = new WeekViewEvent();
  weekViewEvent.setName(getName());
  weekViewEvent.setStartTime(startTime);
  weekViewEvent.setEndTime(endTime);
  weekViewEvent.setColor(Color.parseColor(getColor()));

  return weekViewEvent;
 }
}

package siso.weekv.apiclient;

import java.util.List;

import retrofit.Callback;
import retrofit.http.GET;

/**
 * Created by Raquib-ul-Alam Kanak on 1/3/16.
 * Website: http://alamkanak.github.io
 */
public interface MyJsonService {

 //https://api.myjson.com/bins/3nh0k
 @GET("/3nh0k")
 void listEvents(Callback<List<Event>> eventsCallback);

}

app項(xiàng)目結(jié)構(gòu):

這里寫圖片描述

Andriod類庫項(xiàng)目結(jié)構(gòu):

這里寫圖片描述

項(xiàng)目運(yùn)行結(jié)果如圖:

這里寫圖片描述

這里寫圖片描述

這里寫圖片描述

這里寫圖片描述

這里寫圖片描述

這里寫圖片描述

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android控件WebView實(shí)現(xiàn)完整截圖

    Android控件WebView實(shí)現(xiàn)完整截圖

    這篇文章主要為大家詳細(xì)介紹了Android控件WebView實(shí)現(xiàn)完整截圖,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Android實(shí)現(xiàn)多線程斷點(diǎn)續(xù)傳

    Android實(shí)現(xiàn)多線程斷點(diǎn)續(xù)傳

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)多線程斷點(diǎn)續(xù)傳,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • Android實(shí)現(xiàn)通話自動錄音

    Android實(shí)現(xiàn)通話自動錄音

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)通話自動錄音,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • Android控件Chronometer定時(shí)器的實(shí)現(xiàn)方法

    Android控件Chronometer定時(shí)器的實(shí)現(xiàn)方法

    這篇文章主要為大家詳細(xì)介紹了Android控件Chronometer定時(shí)器的實(shí)現(xiàn)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Android3.0 ActionBar導(dǎo)航標(biāo)題欄使用解析

    Android3.0 ActionBar導(dǎo)航標(biāo)題欄使用解析

    這篇文章主要為大家詳細(xì)解析了Android3.0 ActionBar導(dǎo)航標(biāo)題欄的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Android實(shí)現(xiàn)衛(wèi)星菜單效果

    Android實(shí)現(xiàn)衛(wèi)星菜單效果

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)衛(wèi)星菜單效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • Android線性布局與相對布局的實(shí)現(xiàn)

    Android線性布局與相對布局的實(shí)現(xiàn)

    大家好,本篇文章主要講的是Android線性布局與相對布局的實(shí)現(xiàn),感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • android studio 清單配置文件androidmainfest.xml詳細(xì)解讀

    android studio 清單配置文件androidmainfest.xml詳細(xì)解讀

    AndroidManifest官方解釋是應(yīng)用清單,每個(gè)應(yīng)用的根目錄中都必須包含一個(gè),并且文件名必須一模一樣,這個(gè)文件中包含了APP的配置信息,系統(tǒng)需要根據(jù)里面的內(nèi)容運(yùn)行APP的代碼,顯示界面,這篇文章介紹了android studio 清單配置文件androidmainfest.xml解讀,需要的朋友可以參考下
    2024-04-04
  • Android ViewFlipper簡單應(yīng)用

    Android ViewFlipper簡單應(yīng)用

    這篇文章主要為大家詳細(xì)介紹了Android ViewFlipper簡單應(yīng)用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Android開發(fā)InputManagerService創(chuàng)建與啟動流程

    Android開發(fā)InputManagerService創(chuàng)建與啟動流程

    這篇文章主要為大家介紹了Android開發(fā)InputManagerService創(chuàng)建與啟動流程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11

最新評論

布拖县| 沭阳县| 浦江县| 周口市| 凤山市| 故城县| 双流县| 文安县| 高雄县| 凯里市| 瑞昌市| 郁南县| 东城区| 当涂县| 兴海县| 灵宝市| 星座| 邻水| 乌什县| 义马市| 眉山市| 武威市| 依安县| 南平市| 贵定县| 怀柔区| 修武县| 十堰市| 都江堰市| 涿鹿县| 台州市| 黄山市| 金寨县| 汪清县| 辽阳县| 文成县| 温州市| 泽州县| 教育| 陇西县| 龙川县|