Android之自定义View实现随手势滑动的小圆球
来源:互联网 发布:丽得姿黑面膜淘宝 编辑:程序博客网 时间:2024/04/29 19:42
一直以来觉得自己只是个菜鸟,虽然公司的项目能轻易的完成,但是总感觉缺少什么。大家似乎都认为android很简单,其实我认为只是初级android简单,若想深入研究它,其实也是很有看头的。
看了任玉刚老师的博客明白了,若想进一步学习android,还是要学习自定义View的,要想做出自己想要的绚丽的View,还是要从底层做起,下一番狠功夫。
俗话说的好,“欲练神功,必先**”,其实说得很有道理。其实自己一直都对View这个重要的知识点还是很模糊的,貌似也是android的难点,为了能练得此神功,花了70块大洋买了任玉刚老师编写的书籍《Android开发艺术探索》,听说这本书的口碑很好,买来后感觉确实非常棒。
今天学习了最简单的一个demo,自定义View实现随手势滑动的小圆球,开始自己的自定义View学习之旅。
效果图:
一.新建一个CustomView,继承自ImageView:
public class CustomView extends ImageView { private int lastX; private int lastY; public CustomView(Context context) { this(context, null); } public CustomView(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean onTouchEvent(MotionEvent event) { //获取屏幕的位置 xy值 int tempX = (int) event.getRawX(); int tempY = (int) event.getRawY(); switch (event.getAction()){ case MotionEvent.ACTION_DOWN: break; case MotionEvent.ACTION_MOVE: int deltaX = tempX - lastX; int deltaY = tempY - lastY; Log.i("dali", "move:deltaX:" + deltaX + ",deltaY:" + deltaY); int translationX = (int) (ViewHelper.getTranslationX(this) + deltaX); int translationY = (int) (ViewHelper.getTranslationY(this) + deltaY); ViewHelper.setTranslationX(this,translationX); ViewHelper.setTranslationY(this,translationY); break; case MotionEvent.ACTION_UP: break; default: break; } lastX = tempX; lastY = tempY; return true; }}可以看到,重写了onTouchEvent方法,通过event.getRawX和event.getRawY获取了相对于屏幕的坐标,因为这是要全屏滑动的,所以需要获取当前点击事件在屏幕中的坐标而不是相对于View自身的坐标。并且声明两个变量lastX和lastY,来记录View移动的初始值,通过两点的坐标,那么便能计算出位移,然后通过第三方库nineoldandroids来实现View的动画移动,最后再次记录lastX和lastY的值。
二.调用这个自定义View:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <com.dali.www.customviewdemo.CustomView android:layout_width="100dp" android:layout_height="100dp" android:layout_centerInParent="true" android:background="@drawable/bg_circle_iv"/></RelativeLayout>三.画一个背景为红色的圆:
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:radius="50dp"/> <solid android:color="@android:color/holo_red_light"/></shape>
1 0
- Android之自定义View实现随手势滑动的小圆球
- Android之自定义View实现随手势滑动的控件
- 自定义view实现随手移动的圆球
- Android 自定义View之随手指滑动的ToggleButton
- 自定义view,跟随手指滑动的圆球
- android自定义view小圆球指哪跑哪
- android自定义数据展示view,随手指滑动实现
- Android自定义一个圆球View
- 利用 viewPager ,ShapeDrawable 实现带小圆球的页面滑动
- 自定义View随手指滑动
- Android自定义随手势滑动的滚动条实现——HorizontalScrollCursor
- Android 自定义View:实现View的滑动效果
- Android 自定义View:实现View的滑动效果
- 自定义view 小圆点随手指滑动
- android 自定义view实现可左右滑动的Tabbar
- android:滑动挂断自定义View的简单实现
- Android 自定义view的实现 滑动按钮案列
- Android自定义View,实现全屏滑动的DrawerLayout
- Maven学习(四)-- 生命周期和插件
- .9图片制作
- 支持多屏幕
- Codeforces Round #362 (Div. 2) B. Barnicle
- 2016微软技术大会 汇聚最前沿科技
- Android之自定义View实现随手势滑动的小圆球
- 台阶走法
- JNDI 在 J2EE 中的角色
- 基于珠海鼎芯IMX6在eglfs平台下Qt5触摸屏问题
- Android笔记:登录显示与隐藏密码
- 第八周拓展实践1小明借书
- adb server version (31) doesn't match this client (36);解决
- iOS简单易用的下载上传速度(网速)监听工具
- QT下使用boost::threadpool编译问题