Android版简历(三)
涉及技术
第一步:ListView
honorsListView = (ListView) honors.findViewById(R.id.honors_list);honorsListView.setAdapter(new ArrayAdapter<String>(this, R.layout.honors_item, honorsListData()));honorsListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,final int position, long id) {Intent toHonor = new Intent(context, HonorActivity.class);toHonor.putExtra("id", position + 1);startActivity(toHonor);}});
<activityandroid:name="com.xjy.resume.HonorActivity"android:theme="@style/AppHonorTheme">
</activity>
然后再定义这个主题:
<style name="AppHonorTheme" parent="android:Theme.NoTitleBar"><item name="android:windowAnimationStyle">@style/honorAnimation</item></style>
这个主题只有一个item,就是android:windowAnimationStyle,顾名思义,这个属性指定了窗口动画的样式,这个样式也是我们自己创建的,如下:
<style name="honorAnimation" parent="@android:style/Animation"><item name="android:activityOpenEnterAnimation">@anim/bottomslidein_anim</item><item name="android:activityOpenExitAnimation">@anim/fadeout_anim</item><item name="android:activityCloseEnterAnimation">@anim/fadein_anim</item><item name="android:activityCloseExitAnimation">@anim/bottomslideout_anim</item></style>
关于这个样式的四个属性大家看名字也能看的到,也就是新打开的Activity进入退出的动画和旧Activity进入退出的动画,动画的定义由于代码比较多,占篇幅太大,我就不贴出来了,这里有四个链接:
honorsListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,final int position, long id) {int count = honorsListView.getChildCount();for (int i = 0; i < count; i++) {View child = honorsListView.getChildAt(i);//获取到itemScaleAnimation sa = new ScaleAnimation(1.0f, 0.0f, 1.0f, 1.0f, Animation.RELATIVE_TO_SELF, 0.5f,Animation.RELATIVE_TO_SELF, 0);//缩放动画,只缩放左右sa.setDuration(500);//动画执行的时间sa.setFillAfter(true);//这个一定要设置,不然动画执行完后item又会变回原来的样子sa.setStartOffset((count - i)*50);//设置开始时间的偏移量,就是靠这个来实现拉帘子的效果if (child != null) {child.setAnimation(sa);//将动画设置给item}child.startAnimation(sa);//执行动画}//因为我们的拉帘子效果是从下面拉到上面,所以最后一个执行的动画是第一个item,给item设置一个//AnimationListener,在onAnimationEnd中完成跳转ActivityhonorsListView.getChildAt(0).getAnimation().setAnimationListener(new Animation.AnimationListener() {@Overridepublic void onAnimationStart(Animation animation) {}@Overridepublic void onAnimationEnd(Animation animation) {Intent toHonor = new Intent(context, HonorActivity.class);toHonor.putExtra("id", position + 1);startActivity(toHonor);}@Overridepublic void onAnimationRepeat(Animation animation) {}});}});
第二步:自定义控件
@Overrideprotected void onDraw(Canvas canvas) {
// Log.i("Ring","onDraw");super.onDraw(canvas);int width = canvas.getClipBounds().width();//获取高度int center = width / 2;//计算中心点int innerCircle = Math.round(center - this.ringWidth - 4); //设置内圆半径int ringWidth = Math.round(this.ringWidth); //设置圆环宽度//绘制内圆Paint p = new Paint();p.setStyle(Paint.Style.FILL);p.setColor(skillColor);p.setStrokeWidth(1);canvas.drawCircle(center, center, innerCircle-20, p);//绘制圆环this.paint.setColor(skillColor);//this.paint.setARGB(255, 212 ,225, 233);this.paint.setStrokeWidth(ringWidth);//创建绘制圆环的范围RectF oval = new RectF();oval.top = this.ringWidth / 2 + 2;oval.left = this.ringWidth / 2 + 2;oval.right = width - this.ringWidth / 2 - 2;oval.bottom = width - this.ringWidth / 2 - 2;//扫过的角度,也就是能力值,注意一定要用float计算,不然会算出0float sweepAngle = (skillPoint / 100f) * 360f;//绘制能力值canvas.drawArc(oval, 270, sweepAngle, false, this.paint);p.setTextSize(TEXT_SIZE);p.setColor(skillTextColor);p.setTextAlign(Paint.Align.CENTER);canvas.drawText(skillText, 0, skillText.length(), center, center, p);}
这个控件大概就是这样了,但是还有一些东西需要处理,比如点击、颜色根据能力改变等等,我们在下一篇文章中会继续讨论。
结尾+扯淡
Android版简历(三)相关推荐
- Android版简历(一)
简介 本人是二本应届毕业生,由于近来找工作,有的公司比较挑学校,好几次都没有笔试的机会.所以我决定弄点让人眼前一亮的东西,因为我个人比较喜欢Android开发(个人觉得我的J2EE比较好,Androi ...
- Android版简历(四)
涉及技术 自定义控件.自定义控件动画 第一步:继承自定义控件 虽然已经实现了需要的控件,但是这个控件的功能还是不够强大,使用起来也不够方便.举个例子:让 控件的颜色随着能力值的大小而不同或者是 点击之 ...
- Android版简历(二)
涉及技术 Pager控件.Menu使用.短信电话调用 第一步:创建菜单 上篇文章我们已经创建好了主界面,但是仅仅只展示这么一点信息是完全不够的吸引面试官的,所以我们得继续加一些需求. 如果我们成功的让 ...
- 疯狂Android讲义第三版完整带目录
疯狂Android讲义第三版完整带目录 下载地址: https://pan.baidu.com/s/1TBgJqJ5gpyg8UXIKxk2UMA 扫码下面二维码关注公众号回复100014 获取分享码 ...
- Android版OpenCV图像处理技术亲自验证[三]之斑点检测ColorBlobDetector
Android版OpenCV图像处理技术亲自验证[二]之斑点检测ColorBlobDetector 程序之美 前言 主体 运行效果 构建过程 核心代码 所遇问题 结束语 程序之美 前言 OpenCV是 ...
- 优秀Android开发简历都是这么写,你学会也可以进大厂
最近收了很多程序员的简历,工作经验从1年到十几年不等.发现一个问题,工作经验范围差不多的程序员,简历看起来也差不多- 为啥程序员的简历如此统一?正好最近看到一个分享也分析了这个问题,结合我个人的一些经 ...
- android 校讯通 源码,校讯通Android版使用说明.doc
校讯通Android版使用说明 说明: 以下截图均来自PC模拟器,实际效果会根据手机的Android系统版本高低,像素高低,分辨率大小,屏幕尺寸大小而有所差异,最终效果以自身手机为准! 下载校讯通An ...
- Android开发实战三之导入现有Android工程项目
选择Create project from existing sample 打开Eclipse环境后,在左上方的菜单上选择[File->New->Project],会弹出[New Proj ...
- 看得见的数据结构Android版之数组表(数据结构篇)
零.前言: 一讲到装东西的容器,你可能习惯于使用ArrayList和数组,你有想过ArrayList和数组的区别吗? Java的类起名字都不是随便乱起的,一般前面是辅助,后面是实质:ArrayList ...
- 还是俄罗斯方块之android版
前面的,口水话 请直接跳过. 虽然现在不比以前了 也没多少人气了,放到首页 都不到几百的点击量.也许博客园整体水平也是在往水的方向发展.不谈那些了,哥也曾经辉煌过 有过一天上千的点击量 ,哥也曾经有过 ...
最新文章
- secureCrt开启oracle
- IDEA 中的神奇插件:防沉迷、防猝死...
- 陀螺仪、罗经、IMU、MEMS四者的区别
- Permission denied (maybe missing INTERNET permission) 错误解决
- 初识:如何实现利用C语言代码封装成可以安装的windows软件?
- python列表数据类型(一分钟读懂)
- 宣布降低Windows Azure 存储和计算的价格
- 海康威视相机SDK开发(多个相机)
- 【人工智能沙龙】未来,语音识别可能应用于哪些商业化场景?
- ADByby 自定义过滤语法简表
- 大学生创业实战 - 代充的套利故事
- linux capability详解与容器中的capability
- 笔记本快捷键(fl980)
- jquery清空购物车小案例
- 6. Lots of Parabolas
- 2020年南京社保减免优惠政策(2-12月汇总)
- 护理学跨考计算机专业,什么是跨专业考研?
- 微信小程序调用python分析图片_小帅丶干货之图像识别在微信小程序展示
- 支持nfc的android手机型号,NFC手机有哪些 2017支持NFC功能的手机推荐
- 5月6日----5月9日二年级课程表