比如说我想实现一个黑白图片不断交换的界面,用的是android-anim的方法。比如设置每次黑色图片停留时间为10ms,白色图片停留时间为10ms。这样就能实现一个黑白不断交替的感觉。但是因为我想在一个界面上实现好多个这样的黑白交替的感觉。每一个黑白图片都放在imageview里面,但是一个界面上有差不多1000个imageview,运行起来很卡,效果也不好。想问一下这种问题怎么解决啊?如果不采用这种方法,怎么才能使运行效果好一点呢?
厄,界面上很多同样的你可以用recycleView的网格布局啊
这个有点耗资源啊
你可以试试把每一个动画都方法单独的工作线程里面
不知道这样有没有用
你可以实行懒加载机制,在界面没有直接面对用户的时候可以不加载,反正他也看不出来,只加载看得到的,
这个就不要用ImageView去装载了,1000个View,每个View都还不停加载图片,当然会卡。要优化内存,黑白图片直接用画颜色就好了,一个自定义view定时按规则draw出来画面。我不知道,你的图片需要怎么排列,如果你的意思是要黑白相间,我给你写一个自定义View
public class WhiteBlackView extends View {
private int hc = 50, vc = 50;
private float w, h;
private RectF rect = new RectF();
private Paint p = new Paint();
private boolean b;
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == 100) {
b = !b;
invalidate();
sendEmptyMessageDelayed(100, 10);
}
}
};
public WhiteBlackView(Context context) {
super(context);
}
public WhiteBlackView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
this.w = w / hc;
this.h = h / vc;
}
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
handler.sendEmptyMessageDelayed(100, 10);
}
@Override
protected void dispatchDraw(Canvas canvas) {
for (int i = 0; i < vc; i++) {
for (int j = 0; j < hc; j++) {
rect.set(w * j, h * i, w * j + w, h * i + h);
boolean ou = (i % 2 == 0) ^ (j % 2 == 0);
if (!b) ou = !ou;
p.setColor(ou ? Color.WHITE : Color.BLACK);
canvas.drawRect(rect, p);
}
}
}
}
我的狗眼已闪瞎。。。