Android实现图标焦点突出效果
来源:互联网 发布:淘宝怎么看自己的淘龄 编辑:程序博客网 时间:2024/04/30 00:51
最近想做一个图标获取焦掉则会有突出效果的功能,效果如下所示:
看了网上android tv焦点特效实现浅析的介绍,综合自己的理解,总结出来,这里就直接上代码吧
首先MainActivity中直接setContentView(R.layout.main),其他什么都没做,主要还是在xml中定义的;
package com.Javen;import android.app.Activity;import android.os.Bundle;public class HomeZomeActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); }}
在main.xml中,这里最好用RelativeLayout布局
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:clipChildren="false" android:clipToPadding="false" > <include android:id="@+id/source_1" android:layout_width="@dimen/layout_source_w" android:layout_height="@dimen/layout_source_h" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" layout="@layout/source_hdmi" android:layout_marginLeft="60dp" android:layout_marginTop="20dp"/> <include android:id="@+id/source_2" android:layout_width="@dimen/layout_source_w" android:layout_height="@dimen/layout_source_h" android:layout_alignTop="@id/source_1" android:layout_toRightOf="@id/source_1" layout="@layout/source_vga" android:layout_marginLeft="10dp"/> <include android:id="@+id/source_3" android:layout_width="@dimen/layout_source_w" android:layout_height="@dimen/layout_source_h" android:layout_alignLeft="@id/source_1" android:layout_below="@id/source_1" layout="@layout/source_av" android:layout_marginTop="10dp"/> <include android:id="@+id/source_4" android:layout_width="@dimen/serch_usb_w" android:layout_height="@dimen/serch_usb_h" android:layout_below="@id/source_2" android:layout_toRightOf="@id/source_3" layout="@layout/serch" android:layout_marginTop="10dp" android:layout_marginLeft="10dp"/> <include android:id="@+id/source_5" android:layout_width="@dimen/serch_usb_w" android:layout_height="@dimen/serch_usb_h" android:layout_below="@id/source_2" android:layout_toRightOf="@id/source_4" layout="@layout/usb_mm" android:layout_marginTop="10dp"/> <include android:id="@+id/source_6" android:layout_width="304dp" android:layout_height="480dp" android:layout_toRightOf="@id/source_2" android:layout_alignTop="@id/source_2" layout="@layout/browser" android:layout_marginLeft="10dp"/></RelativeLayout>
这里的source_hdmi.xml,source_vga.xml等布局都是一样的,这里只看一个就行了
<view xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/layout_source_hidmi" android:layout_width="@dimen/layout_source_w" android:layout_height="@dimen/layout_source_h" class="com.Javen.HomeItemZoom" android:clickable="true" android:clipChildren="false" android:clipToPadding="false" android:descendantFocusability="blocksDescendants" android:focusable="true" android:focusableInTouchMode="true" android:nextFocusDown="@+id/layout_source_av" android:nextFocusRight="@+id/layout_source_vga" > <ImageView android:id="@+id/layout_tv_hdmi_image_background" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="left|center" android:background="@drawable/source_hdmi_img" android:duplicateParentState="true" android:focusable="true" android:focusableInTouchMode="true" /> <TextView android:id="@+id/layout_tv_source_hdmi_name" android:layout_width="148dp" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_gravity="bottom|left" android:layout_marginBottom="50dp" android:layout_marginRight="10dp" android:focusable="false" android:focusableInTouchMode="false" android:gravity="center" android:text="@string/source_hdmi_name" android:textColor="#FFFFFFFF" android:textSize="35sp" /></view>最后最主要的功能实现在HomeItemZoom类中
package com.Javen;import android.content.Context;import android.graphics.Canvas;import android.graphics.Rect;import android.graphics.drawable.Drawable;import android.util.AttributeSet;import android.view.animation.Animation;import android.view.animation.AnimationUtils;import android.widget.RelativeLayout;public class HomeItemZoom extends RelativeLayout {private Rect mBound;private Drawable mDrawable;private Rect mRect;private Animation scaleSmallAnimation;private Animation scaleBigAnimation;public HomeItemZoom(Context context) {super(context);init();}public HomeItemZoom(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);init();}public HomeItemZoom(Context context, AttributeSet attrs) {super(context, attrs);init();}protected void init() {setWillNotDraw(false);mRect = new Rect();mBound = new Rect();mDrawable = getResources().getDrawable(R.drawable.baidu);//nav_focused_2,poster_shadow_4 home_usb_selsetChildrenDrawingOrderEnabled(true);}@Overrideprotected void onAttachedToWindow() {super.onAttachedToWindow();}@Overridepublic void draw(Canvas canvas) {super.draw(canvas);}@Overrideprotected void onDraw(Canvas canvas) {if (hasFocus()) {System.out.println("HomeItemZoom focus : true ");super.getDrawingRect(mRect);//mBound.set(-16+mRect.left, -16+mRect.top, 16+mRect.right, 16+mRect.bottom);//haiermBound.set(-37+mRect.left, -37+mRect.top, 37+mRect.right, 37+mRect.bottom);//baidumDrawable.setBounds(mBound);canvas.save();mDrawable.draw(canvas);canvas.restore();}super.onDraw(canvas);}@Overrideprotected void onFocusChanged(boolean gainFocus, int direction, Rect previouslyFocusedRect) {super.onFocusChanged(gainFocus, direction, previouslyFocusedRect);if (gainFocus) {bringToFront();getRootView().requestLayout();getRootView().invalidate();zoomOut();} else {zoomIn();}}private void zoomIn() {if (scaleSmallAnimation == null) {scaleSmallAnimation = AnimationUtils.loadAnimation(getContext(), R.anim.bottom_zoom_out);}startAnimation(scaleSmallAnimation);}private void zoomOut() {if (scaleBigAnimation == null) {scaleBigAnimation = AnimationUtils.loadAnimation(getContext(), R.anim.bottom_zoom_in);}startAnimation(scaleBigAnimation);}}
这样就能实现获取焦掉后的突出效果了
0 0
- Android实现图标焦点突出效果
- RadioButton某个图标突出效果
- animation 实现果冻突出效果
- jquery实现突出显示效果
- Android实现下载进度条图标效果
- android listview焦点效果
- Android 图标拖动效果
- [Android界面0]图标选项卡效果,用TabActivity实现
- Android之界面切换并且图标显示状态效果实现
- android实现qq邮箱多个图标效果
- Android --中间突出的底部导航栏布局简单实现
- Android gridview 图标浮出效果
- 基于jQuery实现的焦点轮换效果
- javascript实现焦点滚动图效果
- dockBar焦点问题 imageView实现闪烁效果
- JQuery实现让元素获取焦点效果
- jQuery实现焦点图播放效果
- JQ实现效果:焦点选中样式
- ffplay播放rtsp视频流花屏问题
- Android中的Interpolator插入器
- Hibernate学习笔记之初体验
- ubuntu/windows双系统默认启动系统设置
- 将指定SQL的执行计划从共享池删除
- Android实现图标焦点突出效果
- Android FrameLayout的android:foreground属性可以设置单击时的前景色
- 辛星解读之数据字典
- NumPy补充篇
- Swift游戏开发之俄罗斯方块:No.10 最后一步!美化你的程序
- 仿微信朋友圈
- 使用fscok实现异步调用(转)
- WordCount程序 编译
- PostgreSql在Windows命令行直接使用psql登录数据库