Android 自定义 按当前view的宽高进行矩形移动内容图
来源:互联网 发布:网络运维绩效考核 编辑:程序博客网 时间:2024/05/18 01:41
import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Matrix;import android.graphics.Rect;import android.view.View;/** * 按当前view的宽高进行矩形移动 内容图 * * author : stone * email : aa86799@163.com * time : 16/4/15 10 18 */public class RectTransView extends View { private Bitmap mBitmap; private int bw; private int bh; private int l, t; private int speed = 10; private int state; private float degress; public RectTransView(Context context) { super(context);//setBackgroundColor(Color.parseColor("#dcaa0000")); } public void setBitmapResid(int resid) { mBitmap = BitmapFactory.decodeStream(getResources().openRawResource(resid)); bw = mBitmap.getWidth(); bh = mBitmap.getHeight(); invalidate(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); if (mBitmap == null) { return; } int w = getMeasuredWidth(); int h = getMeasuredHeight(); Matrix matrix; speed = (int) (Math.random() * 20); switch (state) { case 0: { if (l + speed <= w - bw) { l += speed; } else { l = w - bw; state = 1; } } break; case 1: { if (t + speed <= h - bh) { t += speed; } else { t = h - bh; state = 2; } } break; case 2: { if (l > speed) { l -= speed; } else { l = 0; state = 3; } } break; case 3: { if (t > speed) { t -= speed; } else { t = 0; state = 0; } } break; } matrix = new Matrix(); matrix.postTranslate(l, t); degress += 4; matrix.postRotate(degress); Bitmap createBitmap = Bitmap.createBitmap(mBitmap, 0, 0, bw, bh, matrix, true); canvas.drawBitmap(createBitmap, null, new Rect(l, t, l + bw, t + bh), null); invalidate(); }}
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); RelativeLayout layout = new RelativeLayout(this); setContentView(layout); RectTransView anim = new RectTransView(this); anim.setBitmapResid(R.mipmap.ic_launcher_android); int widthPixels = getResources().getDisplayMetrics().widthPixels; int heightPixels = getResources().getDisplayMetrics().heightPixels; RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams( widthPixels/2, heightPixels/2); params.addRule(RelativeLayout.CENTER_IN_PARENT); layout.addView(anim, params); }}
0 0
- Android 自定义 按当前view的宽高进行矩形移动内容图
- android自定义view查看高清移动大图
- Android酱油笔记之自定义View的宽高
- Android自定义控件之矩形View(长宽比例限制)
- Android开发-自定义View-AndroidStudio(二十七)移动的View
- Android 自定义View之矩形渐变表格
- 保持宽高比的自定义View
- 浅谈自定义View的宽高获取
- 浅谈自定义View的宽高获取
- 浅谈自定义View的宽高获取
- 自定义view设置默认的宽高
- 自定义View的宽高获取
- 自定义view 小球的移动
- android从零开始-开发自定义View-跟随手指移动的小球
- 移动开发----Android模仿打字机效果的自定义View实现
- android view的宽高通过代码进行设置---dp和sp之间互转
- android圆角矩形图片的实现进而讨论view自定义的要点
- Android自定义View 一附<点,线,矩形,扇形和文字的简单用法>
- Radio开发新功能
- cas系列(二)--cas单点登录配置
- 如何使用OpenCV实现基于标记的定位(为什么对标记检测能够实现定位)
- ORA-01789: query block has incorrect number of result columns
- 重写QWidget关闭时触发的事件
- Android 自定义 按当前view的宽高进行矩形移动内容图
- UVALA 4329 - Ping pong 树状数组+组合原理
- LeetCode 154 Find Minimum in Rotated Sorted Array II
- Xcode添加文件没有Copy进去??
- 判断输入正整数的数字范围
- combox的Item添加数组的方法
- spring junit 单元测试
- 第82课:Spark Streaming第一课:案例动手实战并在电光石火间理解其工作原理
- angularjs 路由 不能嵌套问题