我正在设计(尝试学习)Android的简单小部件。 我有:
public class NewAppWidget extends AppWidgetProvider {
在该课程中,我有简单的代码:
public double angle(Calendar calendarDate) {
//Earth rotation;
int day = calendarDate.get(Calendar.DAY_OF_YEAR);
int angle;
angle = (day / 365) * 360;
return angle;
}
然后,我想在ImageView中选择一个图像并按该角度旋转,这完全不起作用......
static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
int appWidgetId) {
// Construct the RemoteViews object
ImageView image = (ImageView) findViewById(R.layout.new_app_widget);
image.setImageResource(R.drawable.moon10);
image.setRotation(angle);
// Instruct the widget manager to update the widget
appWidgetManager.updateAppWidget(appWidgetId, new_app_widget);
}
那里可能有几个错误 - 我是初学者。
Android工作室突出显示的三个错误是:
感谢您的帮助,祝您度过愉快的一天。
JY
答案 0 :(得分:0)
答案 1 :(得分:0)
要获得方向,请使用以下功能。只需传递上下文和图像路径的Uri
public static int getGalleryOrientation(Context context, Uri path) {
/* it's on the external media. */
Cursor cursor = context.getContentResolver().query(path,
new String[]{MediaStore.Images.ImageColumns.ORIENTATION},
null, null, null);
if (cursor.getCount() != 1) {
return -1;
}
cursor.moveToFirst();
return cursor.getInt(0);
}
答案 2 :(得分:0)
<强> TL; DR 强>
无法将方法View.setRotation(float)
与主屏幕小部件中的任何View
一起使用,至少这是我的IDE告诉我的:
W / AppWidgetHostView:使用错误视图,updateAppWidget找不到任何视图 android.widget.RemoteViews $ ActionException:view:android.widget.ImageView无法使用RemoteViews方法:setRotation(float)
话虽如此,让我们至少让你的app小部件启动并运行:)
你需要一个ImageView
的布局文件,我们称之为 new_app_widget.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="@dimen/widget_margin"
android:background="#09C">
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
android:background="#ffffff"
android:id="@+id/imageView"
android:layout_gravity="center"
/>
</FrameLayout>
更改您的代码:
static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
int appWidgetId) {
// Construct the RemoteViews object
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.new_app_widget);
// use the RemoteViews methods to access the children of the FrameLayout:
views.setImageViewResource(R.id.imageView, R.drawable.moon10);
// Instruct the widget manager to update the widget
appWidgetManager.updateAppWidget(appWidgetId, views);
}
如果您需要轮换,则必须在Drawable
上执行此操作,然后使用上面的轮换Drawable
来电setImageViewResource()
。
另请参阅Rotating a drawable in Android
最后,关于:
红色角度(无法解析符号角度)
您已定义方法angle(Calendar)
。如果您想使用它,则需要使用一些Calendar
输入来调用它。