前言:现在从头开始看android,对于以前漏下的东东,重新补回来,所以后面几天大家看到文章估计都是比较基础的啦。其实我更想把博客当做一种记忆工具,记录下我都学到了些什么,都做了些什么,过了几年再回头看,哇,原来我做了那么多东西,不枉此行就好了。
以前写过两篇关于布局的,链接如下:
《动态添加综合布局---动态添加控件及将某XML动态加入到Activity显示(续)》
本文实现效果:
自定义一个小图标(机器人),让它能根据手指滑动改变当前位置,像360在桌面上显示的东东一样的那种……
一、主Activity建立
新建一个工程(tryDynamicLayout),MainActivity对应的XML名叫:activity_main;
布局代码如下
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/shuaige"
android:id="@+id/mylayout" >
</FrameLayout>
只是加了一个背景,如上图的帅哥图片……
二、机器人小图标建立(RobotView)
代码如下:
public class RobotView extends View {
public float bitmapX;
public float bitmapY;
public RobotView(Context context) {
super(context);
// TODO Auto-generated constructor stub
bitmapX=750;
bitmapY=500;
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
Paint paint =new Paint();
Bitmap bitmap=BitmapFactory.decodeResource(this.getResources(), R.drawable.ic_launcher);
canvas.drawBitmap(bitmap, bitmapX, bitmapY, paint);
if(bitmap.isRecycled()){
bitmap.recycle();
}
}
}
1、定义两个变量bitmapX、bitmapY分别保存当前小机器人所要绘制的坐标。
2、关键位置在于重新OnDraw函数根据当前的位置,绘制出小机器人图标。
(每次重绘这个View的实例的时候,都会调用OnDraw函数,也就是说在OnDraw函数里绘制成什么样,显示的出来的这个View实例就长什么样。这里我们每次重绘都绘制小机器人图标;
试想一下,如果你设计一个全局变量来保存当前重绘的次数,每次重绘都把小机器人放大一倍,你就会看到这个小机器人的图标在一直长大,其它类似……)
三、MainActivity代码
主Activity代码如下:public class MainActivity extends Activity {
private RobotView rabbit;
@SuppressLint("ClickableViewAccessibility") @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FrameLayout frameLayout=(FrameLayout)findViewById(R.id.mylayout);
rabbit=new RobotView(MainActivity.this);
frameLayout.addView(rabbit);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
if(event.getAction()==MotionEvent.ACTION_MOVE)
{
rabbit.bitmapX=event.getX();
rabbit.bitmapY=event.getY();
rabbit.invalidate();
}
return super.onTouchEvent(event);
}
}
1、首先在OnCreate的时候,将新建的RobotView加入到当前布局中,关于如何动态加载布局的问题,请移步
《动态添加综合布局---动态添加控件及将某XML动态加入到Activity显示(续)》
2、添加onTouchEvent捕捉手指在当前acitivity滑动时的坐标,将其传入新建 的RobotView实例rabbit,然后重绘rabbit;
四、扩展(360桌面图标实现)
上面的部分只是很简单的实现了一个VIEW的重建,对于更复杂的问题,比如360的桌面小人是如何实现出来的问题,有位大牛已经有现成的实例了。移步:
《Android课堂-在桌面添加可拖动/可点击的悬浮窗口(续)》
本文源码地址:http://download.csdn.net/detail/harvic880925/7694283
请大家尊重原创者版权,转载请标明出处:http://blog.csdn.net/harvic880925/article/details/38295431 万分感激……