main.xml 文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

<LinearLayout
        android:id="@+id/ll_week"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

<TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="周日" />

<TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="周一" />

<TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="周二" />

<TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="周三" />

<TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="周四" />

<TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="周五" />

<TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="周六" />
    </LinearLayout>

<ViewFlipper
        android:id="@+id/flipper1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/ll_week" />
    <TextView 
        android:id="@+id/tv_date"
        android:layout_below="@id/flipper1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="2014年5月6日"
        android:gravity="center"
        />

</RelativeLayout>

item_calendar.xml文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="vertical" >

<TextView
            android:id="@+id/tv_calendar"
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:gravity="center" />
    </LinearLayout>

</LinearLayout>

MainActivity.java

public class MainActivity extends Activity implements OnGestureListener {

private ViewFlipper flipper1 = null;
private GridView gridView = null;
private GestureDetector gestureDetector = null;
private int year_c = 0;
private int month_c = 0;
private int day_c = 0;
private int week_c = 0;
private int week_num = 0;
private String currentDate = "";
private static int jumpWeek = 0;
private static int jumpMonth = 0;
private static int jumpYear = 0;
private DateAdapter dateAdapter;
private int daysOfMonth = 0; // 某月的天数
private int dayOfWeek = 0; // 具体某月的第一天是星期几
private int weeksOfMonth = 0;
private SpecialCalendar sc = null;
private boolean isLeapyear = false; // 是否为闰年
private int selectPostion = 0;
private String dayNumbers[] = new String[7];
private TextView tvDate;
private int currentYear;
private int currentMonth;
private int currentWeek;
private int currentDay;
private int currentNum;
private boolean isStart;// 是否是交接的月初

public MainActivity() {

Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M-d");
currentDate = sdf.format(date);

year_c = Integer.parseInt(currentDate.split("-")[0]);
month_c = Integer.parseInt(currentDate.split("-")[1]);
day_c = Integer.parseInt(currentDate.split("-")[2]);//9

currentYear = year_c;
currentMonth = month_c;
currentDay = day_c;

sc = new SpecialCalendar();

getCalendar(year_c, month_c);

week_num = getWeeksOfMonth();//12月份week_num是5

currentNum = week_num;//5

if (dayOfWeek == 7) {
week_c = day_c / 7 + 1;
} else {
if (day_c <= (7 - dayOfWeek)) {
week_c = 1;
} else {
if ((day_c - (7 - dayOfWeek)) % 7 == 0) {
week_c = (day_c - (7 - dayOfWeek)) / 7 + 1;
Log.i("life", "day_c = "+ day_c );
} else {
week_c = (day_c - (7 - dayOfWeek)) / 7 + 2;
}
}
}
currentWeek = week_c;

Log.i("life", " currentWeek = "+currentWeek );

getCurrent();

}

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

tvDate = (TextView) findViewById(R.id.tv_date);
tvDate.setText(year_c + "年" + month_c + "月" + day_c + "日");

gestureDetector = new GestureDetector(this);
flipper1 = (ViewFlipper) findViewById(R.id.flipper1);
dateAdapter = new DateAdapter(this, getResources(), currentYear,
currentMonth, currentWeek, currentNum, selectPostion,
currentWeek == 1 ? true : false);
addGridView();
dayNumbers = dateAdapter.getDayNumbers();
gridView.setAdapter(dateAdapter);
selectPostion = dateAdapter.getTodayPosition();
gridView.setSelection(selectPostion);
flipper1.addView(gridView, 0);
}

/**
* 判断某年某月所有的星期数

* @param year
* @param month
*/
public int getWeeksOfMonth(int year, int month) {
// 先判断某月的第一天为星期几
int preMonthRelax = 0;
int dayFirst = getWhichDayOfWeek(year, month);
int days = sc.getDaysOfMonth(sc.isLeapYear(year), month);
if (dayFirst != 7) {
preMonthRelax = dayFirst;
}
if ((days + preMonthRelax) % 7 == 0) {
weeksOfMonth = (days + preMonthRelax) / 7;
} else {
weeksOfMonth = (days + preMonthRelax) / 7 + 1;
}
return weeksOfMonth;

}

/**
* 判断某年某月的第一天为星期几

* @param year
* @param month
* @return
*/
public int getWhichDayOfWeek(int year, int month) {
return sc.getWeekdayOfMonth(year, month);

}

/**

* @param year
* @param month
*/
public int getLastDayOfWeek(int year, int month) {

return sc.getWeekDayOfLastMonth(year, month,
sc.getDaysOfMonth(isLeapyear, month));
}

public void getCalendar(int year, int month) {
isLeapyear = sc.isLeapYear(year); // 是否为闰年
daysOfMonth = sc.getDaysOfMonth(isLeapyear, month); // 某月的总天数
dayOfWeek = sc.getWeekdayOfMonth(year, month); // 某月第一天为星期几

Log.i("life", " dayOfWeek = "+dayOfWeek );
}

public int getWeeksOfMonth() {

int preMonthRelax = 0;
if (dayOfWeek != 7) {//2014年的12月1号是星期一,所以preMonthRelax的值是1
preMonthRelax = dayOfWeek;
}

if ((daysOfMonth + preMonthRelax) % 7 == 0) {
weeksOfMonth = (daysOfMonth + preMonthRelax) / 7;
} else {
weeksOfMonth = (daysOfMonth + preMonthRelax) / 7 + 1;//所以2014年的12月的weeksOfMonth值是1
}

Log.i("life", " weeksOfMonth = "+weeksOfMonth );

return weeksOfMonth;
}

private void addGridView() {
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
gridView = new GridView(this);
gridView.setNumColumns(7);
gridView.setGravity(Gravity.CENTER_VERTICAL);
gridView.setSelector(new ColorDrawable(Color.TRANSPARENT));
gridView.setVerticalSpacing(1);
gridView.setHorizontalSpacing(1);
gridView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return MainActivity.this.gestureDetector.onTouchEvent(event);
}
});

gridView.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {

selectPostion = position;
dateAdapter.setSeclection(position);
dateAdapter.notifyDataSetChanged();
tvDate.setText(dateAdapter.getCurrentYear(selectPostion) + "年"
+ dateAdapter.getCurrentMonth(selectPostion) + "月"
+ dayNumbers[position] + "日");
}
});
gridView.setLayoutParams(params);
}

@Override
protected void onPause() {
super.onPause();
jumpWeek = 0;
}

@Override
public boolean onDown(MotionEvent e) {

return false;
}

@Override
public void onShowPress(MotionEvent e) {

}

@Override
public boolean onSingleTapUp(MotionEvent e) {
return false;
}

@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
return false;
}

@Override
public void onLongPress(MotionEvent e) {

}

/**
* 重新计算当前的年月
*/
public void getCurrent() {
if (currentWeek > currentNum) {
if (currentMonth + 1 <= 12) {
currentMonth++;
} else {
currentMonth = 1;
currentYear++;
}
currentWeek = 1;
currentNum = getWeeksOfMonth(currentYear, currentMonth);
} else if (currentWeek == currentNum) {
if (getLastDayOfWeek(currentYear, currentMonth) == 6) {
} else {
if (currentMonth + 1 <= 12) {
currentMonth++;
} else {
currentMonth = 1;
currentYear++;
}
currentWeek = 1;
currentNum = getWeeksOfMonth(currentYear, currentMonth);
}

} else if (currentWeek < 1) {
if (currentMonth - 1 >= 1) {
currentMonth--;
} else {
currentMonth = 12;
currentYear--;
}
currentNum = getWeeksOfMonth(currentYear, currentMonth);
currentWeek = currentNum - 1;
}
}

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
int gvFlag = 0;
if (e1.getX() - e2.getX() > 80) {
// 向左滑
addGridView();
currentWeek++;
getCurrent();
dateAdapter = new DateAdapter(this, getResources(), currentYear,
currentMonth, currentWeek, currentNum, selectPostion,
currentWeek == 1 ? true : false);
dayNumbers = dateAdapter.getDayNumbers();
gridView.setAdapter(dateAdapter);
tvDate.setText(dateAdapter.getCurrentYear(selectPostion) + "年"
+ dateAdapter.getCurrentMonth(selectPostion) + "月"
+ dayNumbers[selectPostion] + "日");
gvFlag++;
flipper1.addView(gridView, gvFlag);
dateAdapter.setSeclection(selectPostion);
this.flipper1.setInAnimation(AnimationUtils.loadAnimation(this,
R.anim.push_left_in));
this.flipper1.setOutAnimation(AnimationUtils.loadAnimation(this,
R.anim.push_left_out));
this.flipper1.showNext();
flipper1.removeViewAt(0);
return true;

} else if (e1.getX() - e2.getX() < -80) {
addGridView();
currentWeek--;
getCurrent();
dateAdapter = new DateAdapter(this, getResources(), currentYear,
currentMonth, currentWeek, currentNum, selectPostion,
currentWeek == 1 ? true : false);
dayNumbers = dateAdapter.getDayNumbers();
gridView.setAdapter(dateAdapter);
tvDate.setText(dateAdapter.getCurrentYear(selectPostion) + "年"
+ dateAdapter.getCurrentMonth(selectPostion) + "月"
+ dayNumbers[selectPostion] + "日");
gvFlag++;
flipper1.addView(gridView, gvFlag);
dateAdapter.setSeclection(selectPostion);
this.flipper1.setInAnimation(AnimationUtils.loadAnimation(this,
R.anim.push_right_in));
this.flipper1.setOutAnimation(AnimationUtils.loadAnimation(this,
R.anim.push_right_out));
this.flipper1.showPrevious();
flipper1.removeViewAt(0);
return true;
// }
}
return false;
}

@Override
public boolean onTouchEvent(MotionEvent event) {
return this.gestureDetector.onTouchEvent(event);
}

}

SpecialCalendar.java

public class SpecialCalendar {

private int daysOfMonth = 0;      //某月的天数
private int dayOfWeek = 0;        //具体某一天是星期几
private int eachDayOfWeek = 0;

// 判断是否为闰年
public boolean isLeapYear(int year) {
if (year % 100 == 0 && year % 400 == 0) {
return true;
} else if (year % 100 != 0 && year % 4 == 0) {
return true;
}
return false;
}

//得到某月有多少天数
public int getDaysOfMonth(boolean isLeapyear, int month) {
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
daysOfMonth = 31;
break;
case 4:
case 6:
case 9:
case 11:
daysOfMonth = 30;
break;
case 2:
if (isLeapyear) {
daysOfMonth = 29;
} else {
daysOfMonth = 28;
}

}
return daysOfMonth;
}

//指定某年中的某月的第一天是星期几
public int getWeekdayOfMonth(int year, int month){
Calendar cal = Calendar.getInstance();
cal.set(year, month-1, 1);
dayOfWeek = cal.get(Calendar.DAY_OF_WEEK)-1;//切记这个地方减了一
return dayOfWeek;
}
public int getWeekDayOfLastMonth(int year,int month,int day){
Calendar cal = Calendar.getInstance();
cal.set(year, month-1, day);
eachDayOfWeek = cal.get(Calendar.DAY_OF_WEEK)-1;
return eachDayOfWeek;
}

}

DateAdapter.java

public class DateAdapter extends BaseAdapter {

private boolean isLeapyear = false; // 是否为闰年
private int daysOfMonth = 0; // 某月的天数
private int dayOfWeek = 0; // 具体某一天是星期几
private int nextDayOfWeek = 0;
private int lastDayOfWeek = 0;
private int lastDaysOfMonth = 0; // 上一个月的总天数
private int eachDayOfWeek = 0;
private Context context;
private SpecialCalendar sc = null;
private Resources res = null;
private Drawable drawable = null;
private String[] dayNumber = new String[7];
private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M-d");
private int currentFlag = -1; // 用于标记当天
// 系统当前时间
private String sysDate = "";
private String sys_year = "";
private String sys_month = "";
private String sys_day = "";
private String currentYear = "";
private String currentMonth = "";
private String currentWeek = "";
private String currentDay = "";
private int weeksOfMonth;
private int default_postion;
private int clickTemp = -1;
private int week_num = 0;
private int week_c = 0;
private int month = 0;
private int jumpWeek = 0;
private int c_month = 0;
private int c_day_week = 0;
private int n_day_week = 0;
private boolean isStart;

// 标识选择的Item
public void setSeclection(int position) {
clickTemp = position;
}

public DateAdapter() {
Date date = new Date();
sysDate = sdf.format(date); // 当期日期
sys_year = sysDate.split("-")[0];
sys_month = sysDate.split("-")[1];
sys_day = sysDate.split("-")[2];
month = Integer.parseInt(sys_month);
}

public DateAdapter(Context context, Resources rs, int year_c, int month_c,
int week_c, int week_num, int default_postion, boolean isStart) {
this();
this.context = context;
this.res = rs;
this.default_postion = default_postion;
this.week_c = week_c;
this.isStart = isStart;
sc = new SpecialCalendar();

lastDayOfWeek = sc.getWeekDayOfLastMonth(year_c, month_c,
sc.getDaysOfMonth(sc.isLeapYear(year_c), month_c));

Log.i("life", " lastDayOfWeek = "+lastDayOfWeek );

currentYear = String.valueOf(year_c);
// 得到当前的年份
currentMonth = String.valueOf(month_c); // 得到本月
// (jumpMonth为滑动的次数,每滑动一次就增加一月或减一月)
currentDay = String.valueOf(sys_day);

// 得到当前日期是哪天
getCalendar(Integer.parseInt(currentYear),
Integer.parseInt(currentMonth));

currentWeek = String.valueOf(week_c);

Log.i("life", " week_c = "+week_c );

getWeek(Integer.parseInt(currentYear), Integer.parseInt(currentMonth),
Integer.parseInt(currentWeek));

}

public int getTodayPosition() {
int todayWeek = sc.getWeekDayOfLastMonth(Integer.parseInt(sys_year),
Integer.parseInt(sys_month), Integer.parseInt(sys_day));
if (todayWeek == 7) {
clickTemp = 0;
} else {
clickTemp = todayWeek;
}
return clickTemp;
}

public int getCurrentMonth(int position) {

int thisDayOfWeek = sc.getWeekdayOfMonth(Integer.parseInt(currentYear),
Integer.parseInt(currentMonth));

if (isStart) {
if (thisDayOfWeek != 7) {
if (position < thisDayOfWeek) {
return Integer.parseInt(currentMonth) - 1 == 0 ? 12
: Integer.parseInt(currentMonth) - 1;
} else {
return Integer.parseInt(currentMonth);
}
} else {
return Integer.parseInt(currentMonth);
}
} else {
return Integer.parseInt(currentMonth);
}

}

public int getCurrentYear(int position) {
int thisDayOfWeek = sc.getWeekdayOfMonth(Integer.parseInt(currentYear),
Integer.parseInt(currentMonth));
if (isStart) {
if (thisDayOfWeek != 7) {
if (position < thisDayOfWeek) {
return Integer.parseInt(currentMonth) - 1 == 0 ? Integer
.parseInt(currentYear) - 1 : Integer
.parseInt(currentYear);
} else {
return Integer.parseInt(currentYear);
}
} else {
return Integer.parseInt(currentYear);
}
} else {
return Integer.parseInt(currentYear);
}
}

public void getCalendar(int year, int month) {
isLeapyear = sc.isLeapYear(year); // 是否为闰年
daysOfMonth = sc.getDaysOfMonth(isLeapyear, month); // 某月的总天数
dayOfWeek = sc.getWeekdayOfMonth(year, month); // 某月第一天为星期几  1
lastDaysOfMonth = sc.getDaysOfMonth(isLeapyear, month - 1);
nextDayOfWeek = sc.getDaysOfMonth(isLeapyear, month + 1);
}

public void getWeek(int year, int month, int week) {

for (int i = 0; i < dayNumber.length; i++) {
if (dayOfWeek == 7) {
dayNumber[i] = String.valueOf((i + 1) + 7 * (week - 1));
} else {
if (week == 1) {
if (i < dayOfWeek) {

Log.i("life", " lastDaysOfMonth = "+lastDaysOfMonth );

dayNumber[i] = String.valueOf(lastDaysOfMonth
- (dayOfWeek - (i + 1)));
} else {
dayNumber[i] = String.valueOf(i - dayOfWeek + 1);
}
} else {
dayNumber[i] = String.valueOf((7 - dayOfWeek + 1 + i) + 7
* (week - 2));
}
}
}
}

public String[] getDayNumbers() {
return dayNumber;
}

/**
* 得到某月有几周(特殊算法)
*/
public int getWeeksOfMonth() {

int preMonthRelax = 0;
if (dayOfWeek != 7) {
preMonthRelax = dayOfWeek;
}
if ((daysOfMonth + preMonthRelax) % 7 == 0) {
weeksOfMonth = (daysOfMonth + preMonthRelax) / 7;
} else {
weeksOfMonth = (daysOfMonth + preMonthRelax) / 7 + 1;
}
return weeksOfMonth;
}

/**
* 某一天在第几周
*/
public void getDayInWeek(int year, int month) {

}

@Override
public int getCount() {
// TODO Auto-generated method stub
return dayNumber.length;
}

@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}

@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(
R.layout.item_calendar, null);
}
TextView tvCalendar = (TextView) convertView
.findViewById(R.id.tv_calendar);
tvCalendar.setText(dayNumber[position]);
if (clickTemp == position) {
tvCalendar.setSelected(true);
tvCalendar.setTextColor(Color.WHITE);
tvCalendar.setBackgroundResource(R.drawable.circle_message);
} else {
tvCalendar.setSelected(false);
tvCalendar.setTextColor(Color.BLACK);
tvCalendar.setBackgroundColor(Color.TRANSPARENT);
}
return convertView;
}

}

Android 周历相关推荐

  1. 日历 android 周历,Android Studio 基础 之 获取系统Calendar 日历日程 (涉及指定日期时间判断是星期几的方法使用)的方法整理...

    Android Studio 基础 之 获取系统Calendar 日历日程 (涉及指定日期时间判断是星期几的方法使用)的方法整理 目录 Android Studio 基础 之 获取系统Calendar ...

  2. js处理时间戳为各种格式/js判断公历/农历/周历节日和节气

    js获取时间 var date = new Date(); date.getYear();//获取当前年份距离1900年的年份 date.getFullYear();//获取当前年份 //date.g ...

  3. 小学计算机室行事周历,关于小学信息技术教案八篇

    关于小学信息技术教案八篇 作为一名老师,通常会被要求编写教案,教案是教学活动的总的组织纲领和行动方案.如何把教案做到重点突出呢?以下是小编整理的小学信息技术教案8篇,希望对大家有所帮助. 小学信息技术 ...

  4. 杨镇一中2021高考成绩查询,杨镇一中高三第14周周历

    原标题:杨镇一中高三第14周周历 杨镇一中高三第14周重点工作: 2019年5月27日-6月2日 1.稳定常规. 2.精准帮扶. 3.智慧备考. 4.高考档案整理. 5.语文英语专家讲座. 6.高三适 ...

  5. [转]使用Word的“邮件合并”功能制作新年周历

    2006年接近尾声,大家在准备新礼物的同时,有没有想过给自己明年的工作准备一份周历.既然是为工作准备的周历,当然主要目的是为了有足够的空间记录日程安排和备忘事宜.虽说现在形形色色的日历不少,但是通常都 ...

  6. java 周历_Java中公历和ISO 8601周历的一个坑

    作者:flhuoshan链接:https://hacpai.com/article/1423812556502 如果尝试运行下面的代码,其结果可能会让你意外: 运行结果为: 2014-12-29 20 ...

  7. 快来!礼物替你选好了:2022年神秘的程序员周历!

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 空山松子落,幽人应未眠.   呼叫 ...

  8. linux万年历,GDI+带农历的万年历(周历)之制作

    今天在网上无意中搜索到"Vista风格日历控件"().下载之后发现,略有BUG,于是进行改进.无意中,制作出来带农历的万年历(周历版). 运行如下图: 主要的改进在: // frm ...

  9. vue周历可左右滑动(带有阴历)

    找了好久找到的大佬作品vue滑动展示周历日历选择器代码_小黑雷的博客-CSDN博客,在大佬的基础上做了小改进,想看的可以做一下参考哦!这个是我改进后的git地址https://gitee.com/lo ...

最新文章

  1. fragment中文网_更新 · React Native 中文网
  2. oracle外部表ora29913,从外部表中选择sqlplus错误:ORA-29913:执行ODCIEXTTABLEOPEN标注时出错...
  3. 应用宝上架审核要求_【建议收藏】安卓应用商店上架经验,含流程,方法
  4. 原价买了二手机,我是如何做到的?
  5. Oracle 定义变量的方法
  6. mybatis框架总体说明---Mybatis学习笔记(二)
  7. java试题汇编_JAVA面试题汇编 - DotNet and J2EE Developer - BlogJava
  8. 快速入门深度学习,其实并不难!
  9. 使用JSF的面向服务的UI
  10. Spring的常见问题及答案
  11. mysql+存储过程+模式,Mysql(7)---存储过程
  12. Django 视图层
  13. hadoop3.1集成tez和tez-ui
  14. IDA远程调试Android中so文件
  15. 2021年皓丽新品- 86KD1 86寸纳米智慧黑板(电容屏)-产品说明
  16. 玩转 ESP32 + Arduino (十九) SIM800L上传数据到OneNet(新版Mqtts)
  17. 世界互联网大会马云演讲实录
  18. iOS 5 故事板进阶(4)
  19. 数字签名、电子签名与电子合同
  20. 常用的表情和含义 各种笑脸;-)

热门文章

  1. js-把秒转化为 *天*小时*分钟*秒
  2. 洪水填充算法用于slg类型游戏的自动寻路
  3. Font Icon 的资源推荐
  4. BZOJ:3894: 文理分科(网络流)
  5. 关于HTC Touch Diamond 2的ROM和WM软件开发高手看过来…
  6. u盘在ubuntu系统下突然变成只读文件
  7. FLASH芯片(W25Q128)
  8. iOS Pages插入方程功能分析
  9. 【Unity技巧】四元数(Quaternion)和旋转
  10. Flutter中的路由实现方式