我正在为Android的livewallpaper工作.代码有效,但我遇到了性能问题.基本上我正在绘制位图并移动它们.有15个小图像,它工作得很好.但是有50个更大的图像,它开始滞后.
在我的移动对象中,我在构造函数中创建了Bitmap并将其显示如下:
public void drawFrame(Canvas canvas) {
Position p = movingStrategy.move();
Matrix matrix = new Matrix();
matrix.postScale(scale, scale);
matrix.postRotate(p.getRotation());
matrix.postTranslate(p.getPositionX(), p.getPositionY());
canvas.drawBitmap(bitmap, matrix, paint);
}
Run Code Online (Sandbox Code Playgroud)
在我的wallpaperservice中,我正在调用onDraw:
private void draw() {
handler.removeCallbacks(drawRunner);
SurfaceHolder holder = getSurfaceHolder();
Canvas canvas = null;
try {
canvas = holder.lockCanvas();
if (canvas != null) {
canvas.save();
canvas.drawColor(Color.BLACK);
for (DrawElement element : elements) {
element.drawFrame(canvas);
}
canvas.restore();
}
} finally {
if (canvas != null)
holder.unlockCanvasAndPost(canvas);
}
if (visible) {
handler.postDelayed(drawRunner, 1);
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用普通的View和它的onDraw,它在那里工作正常.它很顺利.现在我问自己如何改善性能.我也尝试了不同的delayMillis,但性能并没有增加.
我也听说过GLWallpaperService,但是绘制简单的Bitmaps似乎很复杂.所以我想改用Canvas.
谢谢 …
我想将我的图像从一个活动传递到另一个活动。起初,我尝试使用图像的 base64 字符串来执行此操作。但这仅适用于小图片。它适用于 400 kb,但不适用于 600 kb。有一个更好的方法吗?顺便说一句,我没有在本地保存图像,我从服务器获取图像,所以我没有真正的Drawable。
我有以下文件:
{
_id : 21353456,
username : "xy",
text : "asdf",
comments : [
{
username : "User1",
text : "hi",
},
{
username : "User2",
text : "hi1",
},
{
username : "User3",
text : "hi2",
},
{
username : "User4",
text : "hi3",
}
]
}
Run Code Online (Sandbox Code Playgroud)
现在,我想获取带有聚合和项目的用户名,文本和注释。另外,如果comments数组包含带有“ User1”的用户名,我也想使用布尔值。我有这个,但是不起作用。
db.posttest.aggregate(
[
{
$project:
{
username: 1,
text: 1,
comments : 1,
hasComment: { $eq: [ "comments.$.username", "User1" ] },
_id: 0
}
}
]
)
Run Code Online (Sandbox Code Playgroud) 我有个问题.我想以编程方式设置margin params,但它不起作用.我有这个xml样式表:
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
</android.support.design.widget.AppBarLayout>
<ImageView
android:layout_width="1440px"
android:layout_height="1000px"
android:id="@+id/post_view_photo"
android:transitionName="@string/transition_image"/>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical|start"
android:layout_margin="@dimen/fab_margin"
app:layout_anchor="@+id/post_view_photo"
android:src="@android:drawable/stat_notify_chat"
app:layout_anchorGravity="bottom|end" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_anchor="@+id/post_view_photo"
app:layout_anchorGravity="bottom|start">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/text_bar"
android:background="@color/colorPrimary">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/username_text"
android:layout_gravity="center_vertical|start"
app:layout_anchor="@+id/post_view_photo"
app:layout_anchorGravity="bottom|start"
android:textSize="25dp"
android:transitionName="@string/transition_username"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginTop="808px"
android:id="@+id/view_bottom_layout">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:id="@+id/post_user_image"
android:src="@drawable/back"
android:paddingTop="10px"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/post_view_maintext"/>
</LinearLayout>
</LinearLayout>
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="#414141"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
我想以编程方式设置边距.但我得到这个错误:
java.lang.ClassCastException: android.support.design.widget.CoordinatorLayout$LayoutParams cannot be …Run Code Online (Sandbox Code Playgroud) 我有这个系列:
{
username : "user1",
arr : [
{
name : "test1",
times : 0
},
{
name : "test2",
times : 5
}
]
}
Run Code Online (Sandbox Code Playgroud)
我有一个带有一些对象的数组.此对象具有名称和值时间.现在我想添加新对象,如果我的数组不包含它们.例:
我在集合中已经有两个名为"test1"和"test2"的对象.我现在想要插入对象"test2","test3"和"test4".它应该只将对象"test3"和"test4"添加到数组而不是"test2".在这种情况下,值times不会执行任何操作,它们在插入时应该只有值0.
有没有办法用一个查询来做到这一点?
我正在创建一个 Android 应用程序,为我的 RecyclerView 创建一个 ListAdapter。我想在不同的活动中使用它。但是当我尝试使用((Activity)context)我的应用程序执行此操作时,它会崩溃。然后我用一个处理程序和 runnable 尝试了它,但是我的布局搞砸了。这样做switch(ActivityName)不是一个好方法,是吗?还有什么我可以做的吗?你有答案吗?
谢谢!