图片会慢慢的向左移动,到头了后,再循环

其实这个效果和屏幕背景图片的效果差不多,屏幕背景图是随着滑动来慢慢的滚动,这是自己每个n秒开始动。实现方式自然是用自定的控件了。这次继承的是ImageView,实现原理是用一个handler来更新x坐标,没隔10毫秒来通知下handler,让其计算下x坐标的值。然后通过invalidate();方法来通知重新绘制图片,这样就能多次调用onDraw()方法了。

MyImageView.java

package com.kale.imageview03;

import java.util.Timer;
import java.util.TimerTask;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.Log;
import android.widget.ImageView; /**
* @author wulianghuan
* 该类为自定义ImageView,用于显示背景图片,并显示背景图片到移动效果
*
*/
public class MyImageView extends ImageView{
private Bitmap back; //背景图片资源
private Bitmap mBitmap; //生成位图
private double startX = 0; //移动起始X坐标 //构造函数中必须有context,attributeSet这两个 参数,否则父类无法调用
public MyImageView(Context context,AttributeSet attributeSet)
{
super(context, attributeSet);
//由于不是Activity子类,只能通过DisplayMetrics来获取屏幕信息
DisplayMetrics dm = getResources().getDisplayMetrics();
//屏幕宽度
int screenWidth = dm.widthPixels;
//屏幕高度
int screenHeight = dm.heightPixels; back = BitmapFactory.decodeResource(context.getResources(), R.drawable.rootblock_default_bg);
//将图片拉伸至屏幕的三倍宽
mBitmap = Bitmap.createScaledBitmap(back, screenWidth*3, screenHeight, true); //实现图片自动向左移动,到头了重新移动
final Handler handler = new Handler()
{
public void handleMessage(Message msg)
{
//判断消息的值是否为1,如果是,则表明是由我的程序发过来的
if (msg.what == 1)
{
Log.i("TAG", "-----"+startX);
//如果到头了,将x坐标直接设置为0.这样的效果有些突兀,大概知道个原理即可
if (startX <= -80)
{
startX = 0;
}
else
{
//如果没到头,就减少个坐标
startX -= 0.09;
}
}
invalidate();//将坐标更新后,重绘。会调用onDraw()方法
}
};
new Timer().schedule(new TimerTask()
{
@Override
public void run()
{
//发送消息的值为1,handler来判断下这个值,是1就执行。
handler.sendEmptyMessage(1);
}
//无延迟,10毫秒循环一次。
}, 0 , 10); } @Override
public void onDraw(Canvas canvas)
{
Log.i("TAG", "-----onDraw");
Bitmap bitmap2 = Bitmap.createBitmap(mBitmap);
canvas.drawBitmap(mBitmap, (float)startX , 0 , null);
}
}

自动移动的ImageView的更多相关文章

  1. Android 实用开源控件

    图片放大缩小: PinchImageView 体验最好的图片手势控件,不同分辨率无缝切换,可与ViewPager结合使用. GestureViews 带有手势控制的ImageView和FrameLay ...

  2. ImageView缩放选项

    ImageView.ScaleType 将图片边界缩放到所在view边界时的缩放选项. Options for scaling the bounds of an image to the bounds ...

  3. 自定义控件之 圆形 / 圆角 ImageView

    一.问题在哪里? 问题来源于app开发中一个很常见的场景——用户头像要展示成圆的:       二.怎么搞? 机智的我,第一想法就是,切一张中间圆形透明.四周与底色相同.尺寸与头像相同的蒙板图片,盖在 ...

  4. android ImageView网络图片加载、动态设置尺寸、圆角..

    封装了一个关于ImageView的辅助类,该类可以方便实现网络图片下载的同时,动态设置图片尺寸.圆角.....一系列连贯的操作,无样式表,java代码实现所有功能,使用很方便. package com ...

  5. 实用的圆形图片控件ImageView

    1.用法直接在布局中引用即可 import android.content.Context;import android.content.res.TypedArray;import android.g ...

  6. iOS学习-UIButton的imageView和titleLabel

    UIButton的imageView和titleLabel的位置设置通过setImageEdgeInsets和setTitleEdgeInsets来设置 参考:http://blog.csdn.net ...

  7. 通过style控制圆形imageView显示

    1. 2.drawable--style <?xml version="1.0" encoding="utf-8"?> <layer-list ...

  8. 【腾讯Bugly干货分享】Android ImageView 正确使用姿势

    本文来自于腾讯bugly开发者社区,未经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/5832602d7196970d65901d76 导语 本文主要介绍了ImageV ...

  9. ImageView设置边框的两种方式

    转载:http://www.2cto.com/kf/201308/239945.html package cc.testimageviewbounds; import android.os.Bundl ...

随机推荐

  1. MySQL 索引原理概述及慢查询优化实战

    MySQL凭借着出色的性能.低廉的成本.丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库.虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位 ...

  2. webpack1.x环境配置与打包基础【附带各种 "坑" 与解决方案!持续更新中...】

    首先介绍传统模块化开发的主流方案: 1.基与CMD的sea.js,玉伯提出的解决方案,据说原来京东团队在使用.用时才定义,就近加载. 2.基于AMD的require.js,之前在用.提前声明与定义.国 ...

  3. [漏洞分析]phpyun系统重装安全隐患#影响从phpyun4.2部分,4.3到4.5全版本

    0x00 之前在t00ls上看到的,漏洞原理很简单,但是都是细节问题,很值得去学习. 感谢bypass师傅. 也发了邮件给官方,但没有任何回复,估计是漏洞作者bypass师傅报备了吧.   0x01 ...

  4. iOS 11开发教程(十六)iOS11应用视图之删除空白视图

    iOS 11开发教程(十六)iOS11应用视图之删除空白视图 当开发者不再需要主视图的某一视图时,可以将该视图删除.实现此功能需要使用到removeFromSuperview()方法,其语法形式如下: ...

  5. usb3.0 monitor is already started

    用360 开机加速里找到这个程序,把它从开机启动中删除掉就好.

  6. BZOJ3772精神污染

    参见http://blog.csdn.net/popoqqq/article/details/43122821 #include<bits/stdc++.h> using namespac ...

  7. ZJOI2019day1退役记

    ZJOI2019day1退役记 每天都在划水,考场上心态炸了,也没什么好说的. 有人催我更退役记,等成绩出来了再更更吧,成绩出来也没心情更了,落差好大,还打不过文化课选手 虽然被卡常数卡到心态爆炸,但 ...

  8. 【BZOJ-4556】字符串 后缀数组+二分+主席树 / 后缀自动机+线段树合并+二分

    4556: [Tjoi2016&Heoi2016]字符串 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 657  Solved: 274[Su ...

  9. 跟着老王学Python

    亲爱的朋友:     欢迎你!很高兴能在这里见到你,你能来到这里说明你真的很喜欢python,很想把python给学好!我觉的你很幸运,开始我学python的时候比较少资料,学起来也比较头疼,现在随着 ...

  10. 回顾JavsScript对象的克隆

    JS对象的数据类型分为两大类:原始类型(string, boolean, number,undefined, function)和 对象类型(array, object, null). 1.浅度克隆 ...