編輯:關於Android編程
Android TV上的焦點凸顯特效相信大家都看到過,那麼我們就來實現它吧,首先上張效果圖。

先說一下實現原理,主要通過重寫RelativeLayout實現item,之後在其中加入scalanimation動畫效果。剛開始處理時,還是發現了一些問題,比如item放大後會被其他item遮擋,如何添加選中邊框等等,以及動畫的實現等等。下面放上實現細節。
首先是item的代碼:
<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHByZSBjbGFzcz0="brush:java;">
hover的src是一個selector drawable,當未focus時,它的背景是tansparent,當focus,放入外框圖片。
自定義的HomeItemContainer 代碼:
public class HomeItemContainer extends RelativeLayout {
private Animation scaleSmallAnimation;
private Animation scaleBigAnimation;
public HomeItemContainer(Context context) {
super(context);
}
public HomeItemContainer(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public HomeItemContainer(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
}
@Override
protected void onFocusChanged(boolean gainFocus, int direction, Rect previouslyFocusedRect) {
super.onFocusChanged(gainFocus, direction, previouslyFocusedRect);
if (gainFocus) {
this.bringToFront();
getRootView().requestLayout();
getRootView().invalidate();
zoomOut();
} else {
zoomIn();
}
}
private void zoomIn() {
if (scaleSmallAnimation == null) {
scaleSmallAnimation = AnimationUtils.loadAnimation(getContext(), R.anim.anim_scale_small);
}
startAnimation(scaleSmallAnimation);
}
private void zoomOut() {
if (scaleBigAnimation == null) {
scaleBigAnimation = AnimationUtils.loadAnimation(getContext(), R.anim.anim_scale_big);
}
startAnimation(scaleBigAnimation);
}
}
順便放上一個scaleanimation縮小的效果代碼:
最後放上item的父view:
這裡我定義了10個item,注意RelativeLayout的兩個屬性,clipChildren設置false,讓children view可以超出自身所設置的大小,clipToPadding設置為false,讓children view可以使用padding 的位置進行繪制,有了這2個屬性,item就可以實現放大而不被遮擋了。
好了,焦點特效的教程就說到這裡了,有問題可以在評論中反饋。
四大組件之Service(三)-Service的跨進程調用
第4節 遠程調用之前提到過:如果站在Service與觸發Service運行的那個組件的角度,根據它們的關系進行分類,有兩種:本地Service,遠程Service。本地S
Android 驅動 (一) GPIO
前面的博文對Lichee做了系列分析,其實就是對在《七年之癢》中所說的,Android BSP具備的一項基本素質-SHELL腳本,所以我們Lichee系列的文章著重分析了
Android五大布局與實際應用詳解
Android總體有五大布局: 線性布局(LiearLayout): 屏幕垂直或水平方向布局。 幀布局(FrameLayout):控件從屏幕左上角開始布局。 相對布
android - 鬧鐘定時功能
由於最近參加一個比賽寫的智能排插助手需要用到定時觸發功能,於是做了一個類似鬧鐘功能,存儲鬧鐘信息用的時android自帶的數據庫源碼地址https://github.co