微信小程序怎么实现日历的年视图功能

微信小程序怎么实现日历的年视图功能,第1张

因为日历是系统自带的,所以读写它一定要申请权限,也就是在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做一个可以运行的小程序,闹钟也行,然后可以连到手机,感谢大神。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9514583.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存