
因为日历是系统自带的,所以读写它一定要申请权限,也就是在AndroidManifestxml加如下两行代码(一个读一个写):
<uses-permission android:name="androidpermissionREAD_CALENDAR"/>
<uses-permission android:name="androidpermissionWRITE_CALENDAR"/>
Android中日历用了三个URL,分别是日历用户的URL,事件的URL,事件提醒URL,三个URL在Android21之前是如下的样子:
calanderURL = "content://calendar/calendars";
calanderEventURL = "content://calendar/events";
calanderRemiderURL= "content://calendar/reminders";
但是在Android22版本以后,三个URL有了改变,变成如下的样子:
calanderURL = "content://comandroidcalendar/calendars";
calanderEventURL = "content://comandroidcalendar/events";
calanderRemiderURL = "content://comandroidcalendar/reminders";
简单的Demo,按照我的步骤一步一步的来:
第一步:新建一个Android工程命名为CalendarDemo
第二步:修改mainxml布局文件,增加了三个按钮,代码如下:
<xml version="10" encoding="utf-8">
<LinearLayout xmlns:android=">
环境搭建就不讲了,直接说开发。
1、时间选择对话框(TimePicker)
2、获取闹钟管理器并对其进行设置
3、注册广播接收器
掌握了这两点,写程序就很简单了。
1、新建android项目:Alarm,sdk版本选择22,Package name:comlqlactivity,Main Activity:Alarm
2、编写界面:直接修改layout中的mainxml文件,代码如下:
Xml代码
<xml version="10" encoding="utf-8">
<LinearLayout xmlns:android=">
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical"
>
<Button
android:id="@+id/timeBtn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/time"
android:textSize="20sp"
/>
<Button
android:id="@+id/cancelAlarmBtn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/cancelAlarm"
/>
</LinearLayout>
界面的效果如下:
3、修改Alarmjava这个activity,在该Activity中需要做这样几件事:
获取界面上的两个按钮组件,并给其绑定事件监听器
第一个时间按钮,点击后,显示时间选择对话框(TimePicker),供选择小时和分钟,并设置闹钟
第二个按钮,点击之后需要当前设定的闹钟
比较难写的代码就是闹钟设置:
//设置时间
Java代码
timeBtnsetOnClickListener(new ButtonOnClickListener(){
@Override
public void onClick(View arg0) {
Logd(TAG, "click the time button to set time");
calendarsetTimeInMillis(SystemcurrentTimeMillis());
new TimePickerDialog(Alarmthis,new TimePickerDialogOnTimeSetListener() {
@Override
public void onTimeSet(TimePicker arg0, int h, int m) {
//更新按钮上的时间
timeBtnsetText(formatTime(h,m));
//设置日历的时间,主要是让日历的年月日和当前同步
calendarsetTimeInMillis(SystemcurrentTimeMillis());
//设置日历的小时和分钟
calendarset(CalendarHOUR_OF_DAY, h);
calendarset(CalendarMINUTE, m);
//将秒和毫秒设置为0
calendarset(CalendarSECOND, 0);
calendarset(CalendarMILLISECOND, 0);
//建立Intent和PendingIntent来调用闹钟管理器
Intent intent = new Intent(Alarmthis,AlarmReceiverclass);
PendingIntent pendingIntent = PendingIntentgetBroadcast(Alarmthis, 0, intent, 0);
//获取闹钟管理器
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
//设置闹钟
alarmManagerset(AlarmManagerRTC_WAKEUP, calendargetTimeInMillis(), pendingIntent);
alarmManagersetRepeating(AlarmManagerRTC_WAKEUP, calendargetTimeInMillis(), 101000, pendingIntent);
ToastmakeText(Alarmthis, "设置闹钟的时间为:"+StringvalueOf(h)+":"+StringvalueOf(m), ToastLENGTH_SHORT)show();
Logd(TAG, "set the time to "+formatTime(h,m));
}
},calendarget(CalendarHOUR_OF_DAY),calendarget(CalendarMINUTE),true)show();
}
});
代码里面有注释,这里就不多解释了,其中new TimePickerDialog为创建时间选择对话框。为了能够看到效果,我给闹钟添加了重复提醒:alarmManagersetRepeating(AlarmManagerRTC_WAKEUP, calendargetTimeInMillis(), 101000, pendingIntent);。
还要为取消闹钟按钮添加事件监听器:
Java代码
//取消闹钟按钮事件监听
final Button cancelAlarmBtn = (Button)findViewById(RidcancelAlarmBtn);
cancelAlarmBtnsetOnClickListener(new ButtonOnClickListener(){
@Override
public void onClick(View arg0) {
Intent intent = new Intent(Alarmthis,AlarmReceiverclass);
PendingIntent pendingIntent = PendingIntentgetBroadcast(Alarmthis, 0, intent, 0);
//获取闹钟管理器
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManagercancel(pendingIntent);
ToastmakeText(Alarmthis, "闹钟已经取消!", ToastLENGTH_SHORT)show();
}
});
在点击取消闹钟按钮时,取消之前设置的闹钟,核心代码就4行。
4、编写广播接收器,用来接收闹钟的广播事件,然后进行相关处理,
Java代码
public class AlarmReceiver extends BroadcastReceiver {
/ (non-Javadoc)
@see androidcontentBroadcastReceiver#onReceive(androidcontentContext, androidcontentIntent)
/
@Override
public void onReceive(Context arg0, Intent data) {
Logd(AlarmTAG, "the time is up,start the alarm");
ToastmakeText(arg0, "闹钟时间到了!", ToastLENGTH_SHORT)show();
}
}
这个代码就很简单了,主要是要继 承 BroadcastReceiver 这个类,然后重写onRecive方法。onRecive方法在闹钟的时间达到之后会执行,在这里我们可以做自己的事情,比如启动某个程序,或者播放铃声,我这里就是简单的提示一下,使用的是Toast。
5、在android的AndroidManifestxml文件中注册广播接收器:
<manifest xmlns:android=">
Xml代码
package="comqlactivity"
android:versionCode="1"
android:versionName="10">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<receiver android:name="AlarmReceiver" android:process=":remote" />
<activity android:name="Alarm"
android:label="@string/app_name">
<intent-filter>
<action android:name="androidintentactionMAIN" />
<category android:name="androidintentcategoryLAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="8" />
</manifest>
核心的配置为<receiver android:name="AlarmReceiver" android:process=":remote" />,这也是闹钟程序的关键,如果不做这个配置,那么时间到了之后,闹钟将不会提示。
接下来就是到模拟器上测试,运行截图如上图。程序源代码见附件。
最简单的应该是用Picture当作容器,里面放置一个Image来显示图像,以下代码需要在窗口中放置标签、 文本框、按钮、标准对话框控件、Picuture各一个(其中Picutre控件中需要放置一个Image和一个垂直滚动条,如下图),然后使用下列代码即可:
Private Sub Command1_Click()
Dim oPic As StdPicture
With CommonDialog1
Filter = "所有文件(jpg;gif;bmp;emf;)|jpg;gif;bmp;emf;"
ShowOpen
If FileName <> "" Then
Text1 = FileName
Set oPic = LoadPicture(FileName)
If Not oPic Is Nothing Then
Image1Picture = oPic
Image1Left = 0
Image1Top = 0
If Image1Height > Picture1ScaleHeight Then
VScroll1Max = (Image1Height - Picture1ScaleHeight) / 10
VScroll1Value = 1
VScroll1Value = 0
VScroll1Visible = True
VScroll1Refresh
Else
VScroll1Visible = False
End If
End If
End If
End With
End Sub
Private Sub Form_Load()
Text1Locked = True
Picture1ScaleMode = vbPixels
Image1Left = 0
Image1Top = 0
With VScroll1
Left = Picture1ScaleWidth - Width
Top = 0
Height = Picture1ScaleHeight
End With
End Sub
Private Sub VScroll1_Change()
If Image1Picture <> 0 Then
Image1Top = -VScroll1Value 10
VScroll1LargeChange = 20
End If
End Sub
区分隐式意图和显式意图的区别,当前活动1使用隐式意图的方式打开浏览器,设置了Intent的action,data参数,系统会找到最匹配的Activity执行对应的 *** 作,需要同时满足action,data
活动3,在manifestxml文件中声明了对应的action,data,category,按照隐式意图的匹配原则,会在系统和manifestxml文件中找到活动3,现在的情况没有实现的原因
将manifestxml声明的活动3改为:
<intent-filter><action android:name="androidintentactionVIEW"/>
<category android:name="androidintentcategoryDEFAULT"/>
<data android:scheme=";
重新运行项目会提示使用那个浏览器还是活动3打开
那是你程序问题omjavafilterFormFilter 压根就没实现filter接口 你就把它配到xml里,当然有错误。
xml里得filter必须实现了filter借口,不是说你类名字含有filter就是filter
方法一:rpnjs:使用rpnjs实现eval函数功能
*** 作链接:网页链接
方法二:
(1)使用Underscorejs: *** 作链接:网页链接
(2)使用Immutablejs: *** 作链接:网页链接
(3)使用UUID、Base64、Chance: *** 作链接:网页链接
扩展微信小程序框架功能(1)——Promise
ES6 对 Promise 有了原生的支持,但微信开发者工具更新版本(011112200)后, 移除了开发者工具对 ES6 中Promise 特性原生的支持, 需要引入第三方的 Promise 库。
扩展微信小程序框架功能(2)——Generator
Generator函数是ES6提供的一种异步编程解决方案,语法行为与传统函数完全不同。
扩展微信小程序框架功能(3)——函数功能增强
Underscorejs 和 Lodash 是最常用的JavaScript库。
扩展微信小程序框架功能(4)——Immutablejs
Immutablejs 是 Facebook 开发的不可变数据集合。Immutable
Data(不可变数据)一旦创建就不能被修改。通过使用Immutable
Data,可以更容易的处理缓存、回退、数据变化检测等问题,应用开发更简单。
扩展微信小程序框架功能(5)——Redux
Redux 是 JavaScript 状态容器,提供可预测化的状态管理。
扩展微信小程序框架功能(6)—日期时间
Momentjs是一个JavaScript的日期、时间处理工具类,其对于JavaScript的日期时间处理功能非常强悍和全面。可以用在浏览器环境中使用,也可以在Nodejs中。
扩展微信小程序框架功能(7)——正则表达式
XRegExp 是一个开源的 JavaScript库,提供一个参数化、可扩展的支持各种浏览器的正则表达式的实现库,支持附加语法、标志以及方法。
扩展微信小程序框架功能(8)——Xml处理
x2js是一个 实现 XML 与 JavaScript 对象之间相互转换的工具库。
扩展微信小程序框架功能(9)——加解密
node-uuid可以快速地生成符合规范 的 UUID。js-base64可以实现Base64编码和解码。crypto-js可以非常方便地在 JavaScript 进行加解密。
扩展微信小程序框架功能(10)——测试辅助
Chance是一个 JavaScript 随机数生成工具。Mockjs可以生成随机数据,拦截 Ajax 请求。
方法三:moment
*** 作链接:网页链接
以上就是关于微信小程序怎么实现日历的年视图功能全部的内容,包括:微信小程序怎么实现日历的年视图功能、用【Matlab】设计一个去除30Hz信号中50Hz的信号的小程序。。、用Android studio做一个可以运行的小程序,闹钟也行,然后可以连到手机,感谢大神。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)