| | |
| | | import android.graphics.Paint; |
| | | import android.util.AttributeSet; |
| | | import android.util.Log; |
| | | import android.view.MotionEvent; |
| | | |
| | | import com.auto.lyric.data.LyricObject; |
| | | import com.auto.lyric.data.LyricServer; |
| | |
| | | |
| | | private float mX; //屏幕X轴的中点,此值固定,保持歌词在X中间显示 |
| | | private float offsetY; //歌词在Y轴上的偏移量,此值会根据歌词的滚动变小 |
| | | private float touchY; //当触摸歌词View时,保存为当前触点的Y轴坐标 |
| | | private int lrcIndex=0; //保存歌词TreeMap的下标 |
| | | private int SIZEWORD=0;//显示歌词文字的大小值 |
| | | private int INTERVAL=45;//歌词每行的间隔 |
| | |
| | | canvas.drawText("找不到歌词", mX, 310, paint); |
| | | } |
| | | super.onDraw(canvas); |
| | | } |
| | | |
| | | /* (non-Javadoc) |
| | | * @see android.view.View#onTouchEvent(android.view.MotionEvent) |
| | | */ |
| | | @Override |
| | | public boolean onTouchEvent(MotionEvent event) { |
| | | // TODO Auto-generated method stub |
| | | float tt=event.getY(); |
| | | switch(event.getAction()){ |
| | | case MotionEvent.ACTION_DOWN: |
| | | break; |
| | | case MotionEvent.ACTION_MOVE: |
| | | touchY=tt-touchY; |
| | | offsetY=offsetY+touchY; |
| | | Log.e("LyricView","offsety:"+offsetY); |
| | | invalidate(); |
| | | break; |
| | | case MotionEvent.ACTION_UP: |
| | | break; |
| | | } |
| | | touchY=tt; |
| | | return true; |
| | | } |
| | | |
| | | public void init(){ |
| | |
| | | return lrcIndex; |
| | | } |
| | | |
| | | public void setIndex(int lrcIndex) { |
| | | this.lrcIndex = lrcIndex; |
| | | } |
| | | |
| | | /** |
| | | * @return the offsetY |
| | |
| | | public void setSIZEWORD(int sIZEWORD) { |
| | | SIZEWORD = sIZEWORD; |
| | | } |
| | | |
| | | public int getIndexFromOffsetY(float offsetY){ |
| | | //220 - index * (binding.lyric.getSIZEWORD() + 44) |
| | | int index = (int) ((220 - offsetY) / (SIZEWORD + 44)); |
| | | Log.i("LyricView", "getIndexFromOffsetY index:"+index); |
| | | if(LyricServer.getLrc_map().keySet().size()>index){ |
| | | return index; |
| | | }else if(index < 0){ |
| | | return 0; |
| | | }else{ |
| | | return LyricServer.getLrc_map().keySet().size() -1; |
| | | } |
| | | } |
| | | } |