1. 程式人生 > >android 飄心動畫(直播點贊)效果(三)---相關知識點整理

android 飄心動畫(直播點贊)效果(三)---相關知識點整理

這篇文章是關於 android 飄心動畫(直播點贊)效果
相關知識點的整理,應為我對動畫相關的部分,不是很熟悉,所以對於第一篇文章上面所涉及的只是進行了總結和整理。

1.android 自定義view之 onMeasure()

可以說過載onMeasure(),onLayout(),onDraw()三個函式構建了自定義View的外觀形象。再加上onTouchEvent()等過載檢視的行為,可以構建任何我們需要的可感知到的自定義View。

其中mode的解釋說明:
mode共有三種情況,取值分別為MeasureSpec.UNSPECIFIED, MeasureSpec.EXACTLY, MeasureSpec.AT_MOST。

MeasureSpec.EXACTLY是精確尺寸,當我們將控制元件的layout_width或layout_height指定為具體數值時如andorid:layout_width=”50dip”,或者為FILL_PARENT是,都是控制元件大小已經確定的情況,都是精確尺寸。

MeasureSpec.AT_MOST是最大尺寸,當控制元件的layout_width或layout_height指定為WRAP_CONTENT時,控制元件大小一般隨著控制元件的子空間或內容進行變化,此時控制元件尺寸只要不超過父控制元件允許的最大尺寸即可。因此,此時的mode是AT_MOST,size給出了父控制元件允許的最大尺寸。

MeasureSpec.UNSPECIFIED是未指定尺寸,這種情況不多,一般都是父控制元件是AdapterView,通過measure方法傳入的模式。
因此,在重寫onMeasure方法時要根據模式不同進行尺寸計算。
下面程式碼就是一種比較典型的方式:

@Override    
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {    
    setMeasuredDimension(getMeasuredLength(widthMeasureSpec, true), getMeasuredLength(heightMeasureSpec, false
)); } private int getMeasuredLength(int length, boolean isWidth) { int specMode = MeasureSpec.getMode(length); int specSize = MeasureSpec.getSize(length); int size; int padding = isWidth ? getPaddingLeft() + getPaddingRight() : getPaddingTop() + getPaddingBottom(); if (specMode == MeasureSpec.EXACTLY) { size = specSize; } else { size = isWidth ? padding + mWave.length / 4 : DEFAULT_HEIGHT + padding; if (specMode == MeasureSpec.AT_MOST) { size = Math.min(size, specSize); } } return size; }

2.android 動畫插值器

2.1插值器的文字解釋:

Interpolator用於動畫中的時間插值,其作用就是把0到1的浮點值變化對映到另一個浮點值變化。

(1) AccelerateDecelerateInterpolator 在動畫開始與結束的地方速率改變比較慢,在中間的時候加速
(2) AccelerateInterpolator 在動畫開始的地方速率改變比較慢,然後開始加速
(3) AnticipateInterpolator 開始的時候向後然後向前甩
(4) AnticipateOvershootInterpolator 開始的時候向後然後向前甩一定值後返回最後的值
(5) BounceInterpolator 動畫結束的時候彈起
(6) CycleInterpolator 動畫迴圈播放特定的次數,速率改變沿著正弦曲線
(7) DecelerateInterpolator 在動畫開始的地方快然後慢
(8) LinearInterpolator 以常量速率改變
(9.) OvershootInterpolator 向前甩一定值後再回到原來位置

2.2插值器的圖表解釋:

3.android 動畫 path 和 pathMeasure

PathMeasure
PathMeasure主要用來測量path,通過它,我們可以得到路徑上特定的點的座標等等。先看看他的基本方法。

(1) 構造方法
public PathMeasure()
public PathMeasure(Path path, boolean forceClosed)
如上,有兩個方法,第一個就不講解了,第二個方法中有兩個引數;
path:需要測量的path
forceClosed:是否關閉path

(2) setPath
public void setPath(Path path, boolean forceClosed)
這裡就是指定需要測量的path,基本和上面的第二個建構函式類似。

(3) getLength
返回當前path的總長度。

(4) getMatrix
public boolean getMatrix(float distance, Matrix matrix, int flags)
這個方法和上面的其實類似,只是他返回的是一個處理好的matrix,但是這個matrix是以左上角作為旋轉點,所以需要將這個點移動到中心點。
其中還多了一個引數flags,指的是這個martrix需要什麼資訊。flags的值有如下兩個
PathMeasure.POSITION_MATRIX_FLAG:位置資訊
pathMeasure.TANGENT_MATRIX_FLAG:切邊資訊,方位角資訊,使得圖片按path旋轉。

4.執行緒安全的累加類 atomicinteger

atomicinteger類的作用:特別適用於高併發訪問。

AtomicInteger,一個提供原子操作的Integer的類。在Java語言中,++i和i++操作並不是執行緒安全的,在使用的時候,不可避免的會用到synchronized關鍵字。而AtomicInteger則通過一種執行緒安全的加減操作介面。

相關推薦

android 動畫(直播)效果()---相關知識點整理

這篇文章是關於 android 飄心動畫(直播點贊)效果 相關知識點的整理,應為我對動畫相關的部分,不是很熟悉,所以對於第一篇文章上面所涉及的只是進行了總結和整理。 1.android 自定義view之 onMeasure() 可以說過載onMeasure

Android/安卓仿淘寶直播效果/qq空間效果動畫

之前玩淘寶誤入它的直播頻道,發現它的直播介面的點贊效果挺好看,然後發現QQ控制元件點贊有類似動畫,於是趁有空花了點時間玩玩。 先上個效果圖: 添加了一個按鈕模擬點贊,點選多少次就出現多個水果,他們的運動軌跡和速度是不一樣的,而且帶有淡入淡出效果。這是淘寶直播的效果,qq

仿花束直播效果

這是一個利用貝塞爾曲線實現的仿花束直播的點贊效果,實現該效果涉及到: 1、Random隨機數的使用; 2、ObjectAnimator屬性動畫及插值器的使用; 3、貝塞爾曲線的使用; /** * Created by Administrator on 2018/1/30. * 點

Android自定義控制元件——效果(仿Twitter)

前言 通過自定義控制元件,意欲模仿Twitter的點贊效果。 主要涉及: 1.三次貝塞爾曲線應用; 2.屬性動畫的綜合應用; 3.自定義View流程. 拆解原效果 我們先看一下Twitter上的原版效果是怎樣的. 放大後: 好吧!原速的

Android使用富文字實現效果(包含人員的頭像)

這篇文章介紹一下使用富文字實現點贊展示效果(包含點贊人員的頭像),之前使用的是SpannableString寫的,但是隻是實現了顯示預設的小心心和後邊的暱稱,頭像沒有展示展示出來。後來將SpannableString換成了SpannableStringBuild

Android -- 自定義ViewGroup+貝塞爾+屬性動畫實現仿QQ效果

private void init(final Context context) { mStarDrawable = new ArrayList<>(); mInterpolators = new ArrayList<>(); mSt

android 雙擊動畫效果

1.模仿抖音雙擊點贊效果 public class AnimatorLove extends RelativeLayout { private Context mContext; float[] num = {-30, -20, 0, 20, 30};//隨機

Android中實現雙擊動畫效果

iv_easy_like.getBackground().setAlpha(0); rlLike.setOnTouchListener(new OnDoubleClickListener(new OnDoubleClickListener.DoubleClickCallb

Android效果的實現

先看下點讚的效果圖 首先新增依賴 api 'com.sackcentury:shinebutton:0.2.0' xml佈局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=

Android自定義View教你一步一步實現即刻效果

前言 今天朋友看了HenCoder的自定義View後說,HenCoder對自定義View講的不錯。實踐中仿寫即刻的點贊你有思路嗎,你不實現一下?二話不說,看了朋友手機效果,對他說:實現不難,用到了位移,縮放,漸變動畫和自定義View的基礎用法,好,那我實現一下,剛好加深對自定義View的理解。 素材準備

仿某直播平臺的效果

現在的直播平臺已經是多的不得了了,而給主播點讚的效果,也是各不相同,今天,我們來自定義一個點讚的效果! 先上效果: 當點選點贊按鈕的時候,就會有不同顏色的心型從底部冒出,並按照不規則的路線運動,在運動過程中,伴隨著各種動畫! 好了,話不多說,直接上程式

Android自定義View效果

上方顯示的動畫部分第二部分最開始我想到的是直接在上方畫一個TextView,然後設定屬性動畫 達到我們的效果,後來思考這種效果最好不增加自身控制元件的大小,假如在上方直接新增TextView那麼必然怎麼整個控制元件的高度,很多這種點讚的效果是放在列表中,高度有限。所以我最後想的是使用PopupWindow來實

Android 自定義View 效果

我們的態度是:每天進步一點點,理想終會被實現。 前言 週一又到了,是不是感覺一個週末還沒過咋個都沒了呢?既來之則安之,我們還是來學習點有用的,由於之前無意間看到了一個點讚的效果,感覺多麼高大上的,所以想著自己也來實現一下。因此有了此文,如果文中有錯還望各

Android設定常見控制元件效果

一. Imageview的點選效果——圖片稍微變暗突出點選效果 public class ClickImageView extends AppCompatImageView { public ClickImageView(Context context) { super(context);

用Flutter實現一個仿Twitter的效果

  這次依然是補作業,之前在寫仿“探探”左滑/右滑的效果的時候,設計稿底部的喜歡Icon其實是有類似於Twitter點贊那種的動效的,但是因為時間原因我偷懶沒寫。   慣例先上效果圖:   GitHub地址:github.com/yumi0629/Fl…   整體演算法是參照了GitHu

JavaScript實現效果

1:通過自定義封裝函式來獲取標籤元素;2:建立閉包來實現資料緩衝的效果3:迴圈遍歷按鈕,設定點選事件本文重點:瞭解閉包的作用,通過閉包可以實現資料的緩衝,即外層函式與裡層函式之間的語句在呼叫外層函式時只會執行一次示例程式碼<!DOCTYPE html> <h

animate.css做效果

nan img ted zip image 源碼下載 。。 下載 mat 花了一晚上研究出來的,感覺還行吧。。。 代碼: 源碼下載: http://image.niunan.net/animatedemo.zipanimate.css做點贊效果

Android linearlayout實現button的效果

有的時候,我們希望LinearLayout佈局也有點選的效果,這時候我們不僅需要一個作為背景的selector,還要設定一些其它屬性才行:android:clickable="true"android

android 自定義水波紋效果Button

welcome 效果 ; 技術基礎思路 自定義 Button 自定義 Drawable 專案原始碼 自定義button 其實這只是一些說法 自定義button,我們只需要將子類繼承 button public class

Android 仿微博的上報功能,持續再取消

             產品需求,實現類似微博的持續點贊再取消功能,因為自己也偶爾刷微博,對這功能有一定的使用上的瞭解,       至於微博點讚的具體實現我並不知道,微博點贊在斷網的情況下依然能點贊,不會提示網路異常,等有網路之後       重新重新整理,實際是沒有點讚