篇一:在android手机上显示图片信息,并让其动态移动,碰到墙壁会自动反弹
我们做Android 程序的时候,有时候需要显示图片在界面上,这里我们将实现一个将图片展示到手机屏幕,并让其不停的浮动的效果!
首先我们要先准备一张图片,在这里我准备了一张图片,如下:
将此图片放到文件夹"res->drawable-*dpi"下,记得,三个文件夹都要放,因为系统会根据不同的分辨率去取不同的图片,如果有的没放,在某些分辨率下,会找不到资源。将此图片重命名为“pic.png”,在R.java里的drawable类里会生成一个pic的常量。
图片要显示,就是要容器可以让其显示,因为所有的Android的UI组件都是继承自View,View也实现了Drawable接口,所以在此,我们也重新定义一个View让其用来显示我们的这张图片,并让这张图片浮动。我们创建一个在包“org.leo.bitmap”下的,类名为“MovingPictureView”的类,该类继承自android.view.View。此类目前代码大致如下:
public class MovingPictureView extends View {
public MovingPictureView(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
}
}
我们要重载他的“onDraw”方法,这个方法就是Android框架展现View的时候用来绘制显示内容那个的方法。在此我们将他的所有方法体都删除掉(上面代码红色部分删掉),完全将其重写。首先我们要创建一个图片对象,在Android里,所有位图图片都是使用Bitmap类来封装的,我们就先声明一个代表我们刚才图片的一个Bitmap对象,可通过以下方式声明:
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pic);
其中的“getResources()”方法,是有View提供的,可以根据此方法获得我们所有的资源,将来有机会再细说!
有了bitmap对象,下一步就是将图片画到我们自己的View上了,看上面的“onDraw”方法,其中的参数是“Canvas”对象,其实就是提供了一个画板,有了画板我们就能画任何我们想画的东西了。可以通过调用canvas的方法将图片画到画板上:
canvas.drawBitmap(bitmap, 0, 0, null);其中的参数分别是“Bitmap对象,Left距离左边界坐标,Top距离上边界坐标,Paint对象”其中的Paint对象,可以做一些额外设置,比如我们要画文字到画板上,就可以通过paint设置其大小,颜色,等,也可以设置透明度(即Alpha值)。画图片也可以通过Paint设置其Alpha值,在此我们不演示了,直接传一个空进去。
通过以上的方式,就可以将图片显示在屏幕上,不过当前我们要修改一下默认Activity的代码,让我们一启动就能看到我们自定义的显示图片的View。在这里我们还是用我们Helloworld实例中的Activity(HelloAndroid)打开此类,将方法“public void onCreate(Bundle savedInstanceState)”中的内容改为如下:
super.onCreate(savedInstanceState);
setContentView(new MovingPictureView(this));
即将当前显示的View设置为我们自定义的View。运行此工程,就会看到如下图所示结果:
图片显示在左上角,现在图片是显示出来了,下一步,我们要让其自动浮动。可以通过不停的改变图片的Left,Top值,再重新画图片达到此效果,如何重画图片呢?View给我们提供了一个名字为“invalidate()”的方法,只要调用此方法,View就会重新调用onDraw方法,重绘该View内容。另外我们创建一个线程,来不停的变换图片的Left,Top值,调用invalidate方法重绘View。实现的全部代码大致如下:
public class MovingPictureView extends View implements Runnable{
//用于显示的图片
Bitmap bitmap;
//图片坐标转化的线程是否运行,false,则停止运行
boolean isRuning = true;
//图片的Lfet,Top值
int left = 0;
int top = 0;
//用于同步线程
Handler handler;
//向量,可以通过调节此两个变量调节移动速度
int dx = 1;
int dy = 1;
public MovingPictureView(Context context) {
super(context);
bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pic);handler = new Handler();
new Thread(this).start();
}
@Override
protected void onDraw(Canvas canvas) {
//将图画到画板上
canvas.drawBitmap(bitmap, left,top, null);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
isRuning = false;//当点击屏幕,则将图片浮动停止
return true;
}
@Override
public void run() {
while(isRuning){
//通过调节向量,来控制方向
dx = left < 0 || left > (getWidth() - bitmap.getWidth()) ? -dx : dx; dy = top < 0 || top > (getHeight() - bitmap.getHeight()) ? -dy : dy;
left = left+dx;
top = top+dy;
handler.post(new Runnable() {
@Override
public void run() {
invalidate();
}
});
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
其中的“handler”是用于线程同步,因为在其他线程中,是不允许直接访问view所在线程中的view对应资源的,如果不加handle,就会抛异常
篇二:真人版动态微信表情的制作
真人版动态微信表情的制作
1、录像,把你要制作的表情人物录制下来。
2、用会声会影等视频制作软件,进行制作并保存。
3、用动画软件制作动态图片gif格式,像素450以下,保存。
4、打开电脑版微信把你制作的动态图片发送到你的手机上。
(QQ表情、电脑上的gif格式动态图片都可以通过电脑版微信发到手机上,像素450、微信可以用)
篇三:怎样打照属于自己的手机“动态屏保”?
怎样打照属于自己的手机“动态屏保”?
你是否看到别人的手机有很炫的屏保?你是否看到过别人的动态图片是自己的照片的闪图?赶快学学吧,和我一起打照属于自己的手机“动态屏保”!
前面的工作:
1确保自己的手机支持动态屏保
2搞清楚自己的手机屏幕分辨率如(176*220 240*320……..) 需要的软件:
1 :主要用它来截图
2:
3:
4:
具体步骤: (光影魔术手)主要用来初期图片处理 (用于后期图像处理) (图片合成)
1:在电脑里选好想要做自己手机屏保的一组图片
2:启动qq
3:分别打开每一张图片,按Ctrl+Alt+A,截出和自己手机屏幕分辨率相同的图片【注意:截图时会出现图片大小显示】
4:打开“光影魔术手”
5:把截好的大小一样的一组图片,分别用光影魔术手打开,在这里,你可以对图片进行:人像美容、涂鸦,抠图….等操作
【注意:要是想突出人物,可以试试“对焦”功能,虚化背景,突出主题】
6打开<picasa>
7:把每张“光影魔术手”处理后的图片分别用“picasa”打开,在这里,用此软件进行编辑,可以实现“文字任意位置添加、拉直、防红眼……”
8:打开“美图秀秀”
9:点击里面的“闪图”选项,先打开其中的一张图片,点击对话框左上角“自己做闪图”选项,然后再点击“添加一帧”,在添加另外一张图片,知道所有图片都添加完毕,在下面还可以调节闪动速度,最后点击保存。
10:电脑连上手机,把图片复制到手机里,把手机墙纸或屏幕保护设置成你刚才做的图片就O了~
大功告成,快看看吧!
欢迎交流:284035934
《手机动感图片》出自:百味书屋
链接地址:http://www.850500.com/news/132668.html
转载请保留,谢谢!