我写了一个简单的代码,使用官方网站上的教程将日常活动插入日历. http://developer.android.com/guide/topics/providers/calendar-provider.html
ContentResolver cr = context.getContentResolver();
ContentValues values = new ContentValues();
values.put(Events.DTSTART, dueDate.getTime());
values.put(Events.ALL_DAY, true);
values.put(Events.DTEND, dueDate.getTime());
values.put(Events.TITLE, "Some Event");
values.put(Events.CALENDAR_ID, mCalID);
TimeZone tz = TimeZone.getDefault();
values.put(Events.EVENT_TIMEZONE, tz.getID());
Uri uri = cr.insert(Events.CONTENT_URI, values);
Run Code Online (Sandbox Code Playgroud)
我发现当我在运行4.03的Acer设备上打开Google Calendar应用程序时,输入的日期已经转回了1天.我当地的时区是Sydney,GMT + 10.
所以我去设置时将当地时区改为美国东部(GMT -5)并运行相同的代码并且日期没有变化.然后我将时区改为GMT + 2,伊斯坦布尔,日期也发生了变化.然后我改为伦敦GMT 0,没有转变.
当我进行非全天活动时,无论时区如何,都会将正确的时间输入日历.
我发现的最接近的错误报告是 http://code.google.com/p/android/issues/detail?id=14051
我在代码中遗漏了什么,或者其他人也遇到了这个问题.
编辑 使用内容解析程序读取事件数据时的进一步检查
ContentResolver cr = context.getContentResolver();
Uri uri = CalendarContract.Events.CONTENT_URI;
String selection =CalendarContract.Events._ID + "=?";
String [] selectionArgs = new String[]{String.valueOf(eventID)};
Run Code Online (Sandbox Code Playgroud)
转换为日期时的长度值是正确的日期和时间,例如.2013年2月14日12.00 AEST(悉尼时间).因此,问题必须出在Google日历阅读这些值的方式中.当我从Android中的日历应用程序手动添加一整天活动,并使用内容解析程序读取时间时,它是AEST(悉尼时间)的日期和上午11点,相当于悉尼的+11 GMT关闭设置.因此,需要在GMT中输入全天事件以避免这种情况,但在文档中没有提到这一点.
所以现在我正在改变时间,以避免这个问题.
随着屏幕分辨率逐渐增加,Google正在推广使用官方文档中的XXHDPI和XXXHDPI图标.
http://developer.android.com/design/style/iconography.html
但在他们的官方Android下载包中,他们只能使用XHDPI.
http://developer.android.com/design/downloads/index.html
他们是否希望我们在不能打扰时创建这些图标?
什么是其他开发人员特别为Holo图标做的,他们是从SVG创建的.
更新
如果您下载的是Icon Pack而不是"all pack",它现在包含XXHDPI图标但仍然没有XXXHDPI.
http://developer.android.com/downloads/design/Android_Design_Icons_20131106.zip
我的应用程序具有向日历添加事件的功能,但为了实现此Android,日历应用程序需要有日历.要添加日历,您必须添加Google帐户.所以我在模拟器中添加了一个Google帐户.它显示为同步关闭:

,所以当我点击它时,数据同步下没有项目.

当我进入日历应用程序 - 设置并单击显示的电子邮件地址时,表示该帐户未被同步.

当我点击帐户和同步按钮时,我回到正方形,无限循环.
请注意,使用模拟器中的电子邮件应用程序,同步很好.

是否有一些我没有记错的无证步骤,或谷歌最近为谷歌日历关闭了此功能.或者,您是否需要Google Plus帐户才能使用此功能,因为他们会在帐户创建屏幕中误导您使用Google +.
我正在使用带有Google API的Android 4.03.我也在4.2上尝试了这个,我遇到了同样的问题.
这是一个logcat,从打开设置菜单一直到点击帐户名 http://pastebin.com/9Fk8NA0i
android google-calendar-api google-account android-virtual-device data-synchronization
我正在寻找与mentuItem.setShowAsAction()的免费方法,即menuItem.getShowAsAction(),因为似乎没有.
http://developer.android.com/reference/android/view/MenuItem.html
由于我需要在将它们设置为MenuItem.SHOW_AS_ACTION_NEVER之前记录当前状态,因此当设备的方向更改回横向时,我可以将菜单项返回到其旧状态.
我需要这样做,因为Honeycomb没有提供新行来显示ICS中的标签.因此,在蜂窝状中,标签没有足够的空间.
在Java或Android中是否有另一个通用的get属性方法,用于在menuitem中查找XML中的属性showAsAction的设置.
谢谢
我知道使用proguard你可以从发行版本中删除java Log.d调试语句 /sf/answers/932932241/
但是有没有办法从NDK C/C++代码中删除日志调试语句.
我正在使用define语句在NDK中调用它们
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)
Run Code Online (Sandbox Code Playgroud) 我无法在任何地方找到如何测量Textview中的getTextSize().从视觉测试看,它似乎不包括下降器,但似乎包括上升器.它似乎也不是从基线开始.
http://en.wikipedia.org/wiki/Descender
这是最接近它的提及,但谷歌的罗曼盖伊忽略了这个问题的一部分.
http://www.mail-archive.com/android-developers@googlegroups.com/msg08514.html
因为我需要这个,因为我正在使用Compound Drawables,我需要能够将drawable与不同设备上的文本对齐.
这是我用来测试复合可绘制圆形的代码,它接触边缘
tvData.setTextSize(TypedValue.COMPLEX_UNIT_PX, 100);
tvData.setText("agB5ãÂ");
int size = (int)tvData.getTextSize();
Drawable img = getResources().getDrawable(R.drawable.circle_white_full_72 ).mutate();
img.setBounds( 0 , 0 , size , size);
tvData.setCompoundDrawables( null, null, img, null );
Run Code Online (Sandbox Code Playgroud)
这是结果

你可以看到它似乎没有使用下降器和上升器.
这是可绘制的图像,如果其他人想要测试 http://i.imgur.com/Yhf8b.png
使用时将图像更改为文本大小的80%
int size = (int)tvData.getTextSize() *80/100;
Run Code Online (Sandbox Code Playgroud)
这是结果,图像转换在100%图像的顶部.也许setCompoundrawables正在做它自己的缩放

我尝试测量字体的中点和drawable,它是关闭的.这是一个突出显示它的图像
最后,我将可绘制的50像素移动到左侧,然后测量输出,它是字体文本基线到基线的高度的一半,因为setTextSize设置为100px.
Android必须使用其他一些布局来缩放和定位复合drawable.也许我应该为此创建另一个问题.这是一个突出基线到基线的图像.
当使用9补丁图像作为背景时,填充似乎总是来自9补丁图像.即使你没有在9补丁图像中使用填充条,它也使用了drawable.
如果未包含填充线,Android将使用左侧和顶部线来定义此可绘制区域.
http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch
但是,您可以使用android:padding = 0dp或= Xdp在XML中覆盖它.不幸的是使用android:paddingLeft = Xdp不起作用.所以你坚持使用统一填充.我试过这样做:
android:padding="2dp"
android:paddingLeft="20dp"
Run Code Online (Sandbox Code Playgroud)
它对左边的填充没有影响.将它们放在styles.xml中会产生类似的结果.
我见过的唯一一个解决方法就是在代码中设置填充.
我有一个使用库项目的项目.图书馆计划有draw9(9.png)文件,当通过Ant构建apk时,它正在剥离可缩放和可填充区域的draw9信息.结果是应用程序只是在不使用draw9信息的情况下拉伸图像.在Android的build.xml中
<target name="-package-resources" depends="-crunch">
Run Code Online (Sandbox Code Playgroud)
这是调用crunch,它更新预处理的PNG缓存(任何人都知道这个缓存的位置?).
-crunch在aapt中运行一个叫做crunch的任务.但我无法找到有关这些论点的任何信息.它似乎从Res文件夹中取出文件并将其放在out res文件夹中(默认为bin/res).
所以我甚至清除了任务,因此它不会运行紧缩,仍然没有正确拉伸图像.然后我用png文件直接复制到out res文件夹替换它,仍然是同样的问题.我甚至在这些任务之间尝试了干净,我遇到了同样的问题.这让我相信缓存是在项目区域之外进行的,但在哪里?
注意当我用Eclipse构建它时一切都很好.
另一个适合我的解决方案是将这些图像从库中复制到主项目中,但它不是理想的解决方案.
其他人似乎遇到了这种紧缩/资源打包的问题,其中aapt in ant build使用来自其他项目的缓存
在这个错误报告中,他们只提到了缓存,只使用时间戳来检查是否更新缓存.
这似乎是aapt的源代码,但我无法通过阅读来查找此缓存的位置.
找出问题所在
对我来说导致问题的原因是我在Ant中使用不同的文件夹(故意)为我的res,src和bin.有一个引用project.library.res.folder.path,它填充了依赖宏.它指向项目的默认res和bin文件夹.所以我做的是将它们更改为指向我的新文件夹.但在这样做的过程中,我改变了他们被列出的旧版本.它开始将资源文件混合到我正在运行aapt时使用的不同库项目中.当我修改订单时,它编译得很好.我也是为project.library.bin.r.file.path做的.
我从那里打开一个活动A,然后打开活动B,并将共享元素传递给它。它可以动画化过渡效果,但是当我返回到活动A,然后再次进入活动B时(仍使用
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
Run Code Online (Sandbox Code Playgroud)
共享元素转换未运行。
对于常规动画,您可以在onNewIntent中调用overridePendingTransition()来运行动画。/sf/answers/582896401/
我尝试在那里调用startPostponedEnterTransition(),但是什么也没发生。
这是我的代码,允许过渡
void allowWindowTransitions(){
Window w = getWindow();
w.requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS);
Run Code Online (Sandbox Code Playgroud)
启动活动的代码
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
ActivityOptionsCompat options = ActivityOptionsCompat.
makeSceneTransitionAnimation(this, sharedElement, "profile");
startActivity(intent, options.toBundle());
Run Code Online (Sandbox Code Playgroud)
我试过弄乱setSharedElementReturnTransition和setSharedElementReenterTransition,但是什么也没发生。
有没有一种方法可以手动触发共享元素转换来解决此问题。
android android-activity android-transitions shared-element-transition
当我尝试使用Medium GitHub 上这篇文章中的类似代码对片段使用转换时。当我在片段管理器上使用 add method() 时它不起作用,但它可以与 replace() 一起使用。
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.addSharedElement(mSharedElement, "transName")
.add(D.id.content_frame, fragment, FRAG_NAME)
.addToBackStack(null)
.commit();
Run Code Online (Sandbox Code Playgroud)
我需要使用 add() 方法来保留下面的片段,因为用户将在包含项目列表的第一个片段和显示有关该项目的详细信息的第二个片段之间来回导航。我不想继续用列表加载片段。
在片段管理器上使用 add() 时,有没有办法让共享元素转换工作,而不是 replace()。
android android-fragments fragmentmanager android-transitions shared-element-transition