circlehead root什么意思思

1966人阅读
Android(4)
1.项目背景:
很多项目中用到的头像都是圆头像,圆头像使界面看起来更具有美感,比如QQ在整个应用中使用的就是圆头像。基本上每个应用都有上传头像的功能,在上传头像的时候需要对图片裁剪。虽然截取出来的图片实际上都是方图,但是在裁剪的时候如果能直观的让用户看到裁剪以后的圆头像的效果,体验就更好了。一像注重用户体验的QQ就是这么实现的,如图
我们项目中用到的也是圆头像。截取头像功能的需求就是做成跟QQ类似的交互,一般我们在设计软件的时候都习惯向业界知名产品“学习”(你懂得)。
我试着上网查了一下开源的头像截取的项目,发现这些项目的截图界面全部都是方图,好吧,轮子还没人造,只能自己动手了。
2.效果图:
csdn图片限制竟然才2M,只好将效果图分成两份了,前后连起来看。
想着其他人做项目的时候可能用的着,就把截图的功能整理了一下,做成了一个小demo,没必要重复造轮子了,分享是互联网的精神精髓。
3.项目托管地址:
如果还不会使用github,你就真out了
4.使用方法:
打开截图界面
* 打开截图界面
* @param uri 原图的Uri
public void starCropPhoto(Uri uri) {
if (uri == null) {
Intent intent = new Intent();
intent.setClass(this, ClipHeaderActivity.class);
intent.setData(uri);
intent.putExtra(&side_length&, 200);//裁剪图片宽高
startActivityForResult(intent, CROP_PHOTO);
获取返回结果
在onActivityResult 方法中
Uri uri = intent.getData();
可以通过uri得到截图文件的本地路径,可以方便的上传到服务器
iv_head_icon.setImageURI(uri); &
ImageView 提供有直接设置图片URI的方法,可以方便的在ImageView中展示
5.实现原理:
下面简单介绍一下具体实现原理:
项目结构:
编译方式:
本项目采用的是gradle编译 导入的时候选gradle wrapper 一般没什么问题
截图界面&ClipHeaderActivity
package com.example.clipheaderlikeqq.app.
import android.app.A
import android.content.I
import android.graphics.B
import android.graphics.M
import android.graphics.PointF;
import android.graphics.R
import android.net.U
import android.os.B
import android.text.TextU
import android.util.L
import android.view.MotionE
import android.view.V
import android.view.View.OnClickL
import android.view.View.OnTouchL
import android.view.ViewTreeO
import android.view.ViewTreeObserver.OnGlobalLayoutL
import android.widget.ImageV
import android.widget.ImageView.ScaleT
import com.example.clipheaderlikeqq.app.R;
import com.example.clipheaderlikeqq.app.util.BitmapU
import com.example.clipheaderlikeqq.monU
import java.io.F
import java.io.IOE
import java.io.OutputS
* 图片裁剪activity
使用方法:
intent.setData(uri);//源图片Uri
intent.putExtra(&side_length&, 130);//裁剪图片宽高
public class ClipHeaderActivity extends Activity implements OnTouchListener{
private String TAG = &ClipHeaderActivity&;
private ImageView srcP
private ImageView iv_
private View bt_
private ClipV
private Matrix matrix = new Matrix();
private Matrix savedMatrix = new Matrix();
* 动作标志:无
private static final int NONE = 0;
* 动作标志:拖动
private static final int DRAG = 1;
* 动作标志:缩放
private static final int ZOOM = 2;
* 初始化动作标志
private int mode = NONE;
* 记录起始坐标
private PointF start = new PointF();
* 记录缩放时两指中间点坐标
private PointF mid = new PointF();
private float oldDist = 1f;
private int side_//裁剪区域边长
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.clip_activity);
private void init() {
side_length = getIntent().getIntExtra(&side_length&,200);
iv_back = (ImageView) findViewById(R.id.iv_back);
srcPic = (ImageView) findViewById(R.id.src_pic);
clipview =
(ClipView)findViewById(R.id.clipView);
bt_ok = findViewById(R.id.bt_ok);
srcPic.setOnTouchListener(this);
//clipview中有初始化原图所需的参数,所以需要等到clipview绘制完毕再初始化原图
ViewTreeObserver observer = clipview.getViewTreeObserver();
observer.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@SuppressWarnings(&deprecation&)
public void onGlobalLayout() {
clipview.getViewTreeObserver().removeGlobalOnLayoutListener(this);
initSrcPic();
bt_ok.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
generateUriAndReturn();
iv_back.setOnClickListener(new OnClickListener() {
public void onClick(View view) {
* 初始化图片
* step 1: decode 出 720*1280 左右的照片
因为原图可能比较大 直接加载出来会OOM
* step 2: 将图片缩放 移动到imageView 中间
private void initSrcPic(){
Uri uri = getIntent().getData();
String path = CommonUtil.getRealFilePathFromUri(getApplicationContext(), uri);
if (TextUtils.isEmpty(path)) {
//原图可能很大,现在手机照出来都左右了,直接加载可能会OOM
//这里 decode 出 720*1280 左右的照片
bitmap = BitmapUtil.decodeSampledBitmap(path,720,1280);
if (bitmap == null) {
//图片的缩放比
if (bitmap.getWidth()&bitmap.getHeight()) {//宽图
scale = (float)srcPic.getWidth()/bitmap.getWidth();
//如果高缩放后小于裁剪区域 则将裁剪区域与高的缩放比作为最终的缩放比
Rect rect = clipview.getClipRect();
float minScale = rect.height()/bitmap.getHeight();//高的最小缩放比
if (scale & minScale){
scale = minS
}else {//高图
scale = (float)srcPic.getWidth()/2/bitmap.getWidth();//宽缩放到imageview的宽的1/2
matrix.postScale(scale, scale);
将缩放后的图片平移到imageview的中心
int midX = srcPic.getWidth()/2;//imageView的中心x
int midY = srcPic.getHeight()/2;//imageView的中心y
int imageMidX = (int)(bitmap.getWidth()*scale/2);//bitmap的中心x
int imageMidY = (int)(bitmap.getHeight()*scale/2);//bitmap的中心y
matrix.postTranslate(midX - imageMidX, midY - imageMidY);
srcPic.setScaleType(ScaleType.MATRIX);
srcPic.setImageMatrix(matrix);
srcPic.setImageBitmap(bitmap);
public boolean onTouch(View v, MotionEvent event) {
ImageView view = (ImageView)
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
savedMatrix.set(matrix);
// 设置开始点位置
start.set(event.getX(), event.getY());
mode = DRAG;
case MotionEvent.ACTION_POINTER_DOWN:
oldDist = spacing(event);
if (oldDist & 10f) {
savedMatrix.set(matrix);
midPoint(mid, event);
mode = ZOOM;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_POINTER_UP:
mode = NONE;
case MotionEvent.ACTION_MOVE:
if (mode == DRAG) {
matrix.set(savedMatrix);
matrix.postTranslate(event.getX() - start.x, event.getY()
- start.y);
} else if (mode == ZOOM) {
float newDist = spacing(event);
if (newDist & 10f) {
matrix.set(savedMatrix);
float scale = newDist / oldD
matrix.postScale(scale, scale, mid.x, mid.y);
view.setImageMatrix(matrix);
* 多点触控时,计算最先放下的两指距离
* @param event
private float spacing(MotionEvent event) {
float x = event.getX(0) - event.getX(1);
float y = event.getY(0) - event.getY(1);
return (float) Math.sqrt(x * x + y * y);
* 多点触控时,计算最先放下的两指中心坐标
* @param point
* @param event
private void midPoint(PointF point, MotionEvent event) {
float x = event.getX(0) + event.getX(1);
float y = event.getY(0) + event.getY(1);
point.set(x / 2, y / 2);
* 获取缩放后的截图
* 1.截取裁剪框内bitmap
* 2.将bitmap缩放到宽高为side_length
private Bitmap getZoomedCropBitmap() {
srcPic.setDrawingCacheEnabled(true);
srcPic.buildDrawingCache();
Rect rect = clipview.getClipRect();
Bitmap cropBitmap =
Bitmap zoomedCropBitmap =
cropBitmap = Bitmap.createBitmap(srcPic.getDrawingCache(), rect.left, rect.top, rect.width(), rect.height());
zoomedCropBitmap = BitmapUtil.zoomBitmap(cropBitmap,side_length,side_length);
} catch (Exception e) {
e.printStackTrace();
if (cropBitmap != null) {
cropBitmap.recycle();
// 释放资源
srcPic.destroyDrawingCache();
return zoomedCropB
* 生成Uri并且通过setResult返回给打开的activity
private void generateUriAndReturn(){
Bitmap zoomedCropBitmap = getZoomedCropBitmap();
if (zoomedCropBitmap == null) {
Log.e(TAG, &zoomedCropBitmap == null&);
Uri mSaveUri = Uri.fromFile(new File(getCacheDir(), &cropped_&+System.currentTimeMillis()+&.jpg&));
if (mSaveUri != null) {
OutputStream outputStream =
outputStream = getContentResolver().openOutputStream(mSaveUri);
if (outputStream != null) {
pressFormat.JPEG, 90, outputStream);
} catch (IOException ex) {
// TODO: report error to caller
Log.e(TAG, &Cannot open file: & + mSaveUri, ex);
} finally {
if (outputStream != null) {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
Intent intent = new Intent();
intent.setData(mSaveUri);
setResult(RESULT_OK, intent);
}大部分相关的解释都在注释中,不再重复说。
实现截图的关键代码
cropBitmap = Bitmap.createBitmap(srcPic.getDrawingCache(), rect.left, rect.top, rect.width(), rect.height());
原理:生成ImageView的当前的DrawingCache,相当于此时ImageView的截图,然后通过ClipView(下面介绍)获取到镂空的圆的矩形坐标,在ImageView的截图上按照坐标截取出一个bitmap
PS:这是我想到的一种实现方式,因为我觉得如果根据用户当前的移动,缩放的情况计算出当前的截图区域在原图中对应的坐标,然后真正从原图中截取出来图片比较复杂。如果有更好的实现方式还请下面留言。
带圆形镂空的遮罩View &&ClipView
package com.example.clipheaderlikeqq.app.
import android.content.C
import android.graphics.*;
import android.graphics.Paint.S
import android.util.AttributeS
import android.view.V
public class ClipView extends View {
private Paint paint = new Paint();
* 画裁剪区域边框的画笔
private Paint borderPaint = new Paint();
* 裁剪框边框宽度
private int clipBorderWidth = 2;
private static final int LAYER_FLAGS = Canvas.MATRIX_SAVE_FLAG | Canvas.CLIP_SAVE_FLAG
| Canvas.HAS_ALPHA_LAYER_SAVE_FLAG | Canvas.FULL_COLOR_LAYER_SAVE_FLAG
| Canvas.CLIP_TO_LAYER_SAVE_FLAG;
private float radiusWidthRatio
= 2f/9;//裁剪圆框的半径占view的宽度的比
public ClipView(Context context) {
this(context, null);
public ClipView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
public ClipView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
paint.setAntiAlias(true); //去锯齿
borderPaint.setStyle(Style.STROKE);
borderPaint.setColor(Color.WHITE);
borderPaint.setStrokeWidth(clipBorderWidth);
borderPaint.setAntiAlias(true); //去锯齿
xfermode = new PorterDuffXfermode(PorterDuff.Mode.DST_OUT);
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
width = this.getWidth();
height = this.getHeight();
//通过Xfermode的DST_OUT来产生中间的圆,一定要另起一个Layer(层),
// 直接在canvas原本的那一层来做的话,最后中间那个圆空了以后,不是透明的,而是黑色的,
//我觉得这应该是因为canvas默认在被“掏空”以后,下面是黑色的,而另起一层的话,被“掏空”就是透明的,
// 然后再把这层加到canvas上就满足了我们的需求
//saveLayer相当于新入栈一个图层,接下来的操作都会在该图层上进行
canvas.saveLayer(0, 0, width, height, null, LAYER_FLAGS);
canvas.drawColor(Color.parseColor(&#a8000000&));
paint.setXfermode(xfermode);
//中间的透明的圆
canvas.drawCircle(width / 2, height / 2, width * radiusWidthRatio, paint);
//白色的圆边框
canvas.drawCircle(width / 2, height / 2, width * radiusWidthRatio + clipBorderWidth, borderPaint);
//出栈,恢复到之前的图层,意味着新建的图层会被删除,新建图层上的内容会被绘制到canvas (or the previous layer)
canvas.restore();
* 获取裁剪区域的Rect
public Rect getClipRect(){
Rect rect = new Rect();
rect.left = (int)(width/2 - width * radiusWidthRatio);//宽度的一半 - 圆的半径
rect.right = (int)(width/2 + width * radiusWidthRatio);//宽度的一半 + 圆的半径
rect.top = (int)(height/2 - width * radiusWidthRatio);//高度的一半 - 圆的半径
rect.bottom = (int)(height/2 + width * radiusWidthRatio);//高度的一半 + 圆的半径
这是比较花时间实现的一个自定义view,这个View中间有一个圆形的镂空,让用户能够直观的看到圆形头像的效果。
几点说明:
1.中间镂空的圆是通过&Xfermode的DST_OUT模式实现的。
不了解的可以百度
2.不能直接使用onDraw(Canvas canvas)的canvas对象来实现Xfermode的DST_OUT模式
而需要另起一层canvas.saveLayer来实现,具体原因代码中解释过了,canvas.saveLayer不熟的可以参考http://blog.csdn.net/lonelyroamer/article/details/8264189
3.布局中使用ClipView时,ClipView往下不能是空背景
本例中ClipView往下是ImageVIew,ImageView往下就是LinearLayout,也就是ImageVIew和LinearLayout的背景必须手动设置一个,不能不设置,不能让ClipView往下是空背景
&LinearLayout xmlns:android=&/apk/res/android&
android:layout_width=&match_parent&
android:layout_height=&match_parent&
android:orientation=&vertical&
android:background=&@android:color/black&&否则在魅族等神机和模拟器上会出现拖动图片的时候在圆型透明区域内重影的现象,猜测原因:圆形区域以下没有需要绘制的东西,连背景也没有,所以系统对这部分没有进行重绘,导致出现了异常情况。
异常情况:
有什么问题,可以下面留言。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:14094次
排名:千里之外
原创:18篇
评论:11条
(1)(1)(1)(1)(2)(6)(8)Please remember to follow the
at all times. has been released for Android and iOS in most countries! Need help learning Pokémon GO? Take a look at our !Check
for up-to-date Pokémon news and discuss it on the
or in our IRC channel .
Pokémon GO Tips, Tools and Guides
From Bulbapedia, the community-driven Pokémon encyclopedia.
The picture used in this article is unsatisfactory.Reason: Should be replaced with Generation VI imagesPlease feel free to replace it so it conforms to Bulbapedia conventions.
Circle Throwともえなげ Overhead Throw
[[File:|center]]
 10 (max. 16)
Affected by
Not affected by Magic Coat
Not affected by Snatch
Not affected by King's Rock
May affect anyone adjacent to the user
Availability
Introduced
Not a , , or
 [[{{{category}}} (condition)|{{{category}}}]]
 0  
 0  
 [[{{{category}}} (condition)|{{{category}}}]]
 0  
 3 ???
 0  
Causes the user to move later on the next turn.
On Smogon's Movedex:
Circle Throw (Japanese: ともえなげ ) is a damage-dealing
introduced in .
Circle Throw inflicts damage. Additionally, it will automatically end wild Pokémon battles or, in a Trainer battle, it will switch out the opposing Pokémon to the next Pokémon in line that has not fainted. If using this move causes the user to faint (such as if the target is holding a
or has the ability
or ), the target will not be forced to switch. Like
and , Circle Throw has decreased priority in battle.
Circle Throw will fail to end wild Pokémon battles or switch out the opposing Trainer's Pokémon if it has the Ability , is under the effects of , or has
set up. It will also fail to end wild Pokémon battles if the user is at a lower level than its target. In a Trainer battle, it will also fail to switch out the opposing Pokémon if there isn't another to take its place.
Description
The user throws the target and drags out another Pokémon in its party. In the wild, the battle ends.
The target is thrown and switched. In the wild, a battle against a single Pokémon ends.
The target is thrown, and a different Pokémon is dragged out. In the wild, this ends a battle against a single Pokémon.
Bold indicates a Pokémon gains
from this move.Italics indicates a Pokémon whose evolution or alternate form receives STAB from this move.
Bold indicates a Pokémon gains
from this move.Italics indicates a Pokémon whose evolution or alternate form receives STAB from this move.
The user grabs the opponent and throws them over their head.
First Used In
Throh grabs its opponent then turns on its back, throwing the opponent over its head.
Riolu grabs its opponent then turns on its back, throwing the opponent over its head.
Lucario grabs its opponent then turns on its back, throwing the opponent over its head.
In the anime, Circle Throw is uniformly depicted as a wrestling maneuver called a "monkey flip", in which the attacker places both hands around the victim's head, falls back, and uses the combined forces of his legs and inertia to throw the victim over head.
Circle Throw's effect of forcing the target to switch has never been featured in the anime.
巴投 Bātóu
Projection
?berkopfwurf
????? Baedae Duichigi
Rzut Obrotowy
Portuguese
Arremesso CircularLan?amento Circular (TCG)
Tiro Circular
Llave Giro
of the move
o Circle Throw
This article is part of , a
that aims to write comprehensive articles on two related aspects of the Pokémon games.
Navigation menu
This page was last modified on 16 August 2016, at 00:34.扫描或点击关注中金在线客服
下次自动登录
其它账号登录:
数据加载中...
数据加载中...
浏览过该文章的人还浏览过
数据加载中...
数据加载中...
数据加载中...
See it?! accurate is large, large, large lovely your intimates! This is strange jinrikishaoon pattern and designpost of the pocketcombi9e985a4a2ed854fbleata1d28e437d5acd of mocassins! Retro pop dot pattern, lovely moccasins joyously Peas ~ lovely little tassels on the vamp, vantage artful deshingle unshared tomboy joker ^ ^ genuinely uppercase! Connection topic of article:
更多股市内幕、实战交流、个股互动请进入中金在线部落&&最火爆的投资交流移动社区,扫描左侧二维码进入体验!详情点击:
是否确认删除这篇文章?
是否确认将这个粉丝放进黑名单?
是否确认这条留言删除?
您确定要删除这条信息?
用手机或者平板电脑扫描应用拍下上方二维码,可以在手机博客继续浏览文本,也可以分享给你的联系人。
以下资料仅供联系使用,请放心填写。
*您的姓名:
*联系电话:
我要给junnan490送鲜花
您将赠送(朵)鲜花给:junnan490
(1鲜花 = 0.1人民币)
附言:(不超过100字)
可用金币:
&&&&&&您还需要支付0元人民币Sorry to bother you, but we aren't going to support this version of your browser much longer. .
supported by
Digital Album
Free Download&
Share / Embed
Listen to your gut. Have some guts.
released July 17, 2013
Recorded, produced and mastered by the talented Ian Bates, at The Mannor in Wallingford, CT.
Danny Sheridan contributed trumpet on tracks 7 & 12.
Jon Stone contributed guest vocals on tracks 1, 6 & 7.
Jay Holmes contributed guest vocals on track 6.
Ian Bates contributed bass, guest vocals and accordion. Bass on tracks 1, 2, 4, 6, 7 & 12. Vocals on tracks 6, 7,
9 & 12. Accordion on tracks 3 & 7.
Cover photo taken by Ellie Miske.
Thank you Ian Bates, Danny Sheridan, Jon Stone, Jay Holmes, Ellie Miske, The Mannor, Kyle Bastos, Jeanette Dilistin, Lauren Dubey, Jesse Menard, The Panty House, Mishka and Ruby. Thank you to anyone that we ever wrote a song for.
Stay Positive. Rest In Paradise Mitchell Dubey.
feeds for ,
Circle//Circle
New Haven, Connecticut
placeholder
We are Circle//Circle.Emily Byram- Ukulele, drums. Kayla Bastos- Banjo, ukulele.Chris Cappello- Guitar.
contact / help
Track Name: Napkins
My mother let me get my feet and my hands muddy,
my knees and elbows bloody,
she'd clean me up and tell me that she loves me.
Your shirt and your shoes are not required here.
Sing into spoons and dance on to the couch with no fear.
And have no fear my darling,
but live so safely for me.
You can try drugs and you can try sex,
but please will you do them so safely for me.
You can drive far, far away from me,
but please will you travel so safely.
And you can jump off into the waters,
but please will you fall so safely.
And you can fall in love with who you meet,
but please call me when you break his heart.
And have no fear my darling,
but live so safely for me.
Track Name: Sailboat
My old friend,
I'm buying a sailboat, won't you come with me?
I'll take you far out to sea,
and we will see things we've always wanted to see.
but once we're on my boat,
we are never going home until we've seen it all.
We will find land that has never been found
and we will walk up onto land that has always been around.
and we will get our feet filthy on this new ground,
get our hair messy in this new wind,
and get our mouths and get our lungs filled with this air,
and get our hands to shake hands with our new friends.
Oh my old friend,
I'm buying a sailboat, won't you come with me?
I'll take you far out to sea,
and we will see things we've only seen in our dreams,
but once we're on my boat,
we are never going home until we've seen it all.
Track Name: Bird Killer
When I'm ready to kill all the birds out in the woods,
when I'm ready to steal the last song from their soul,
I will bring no guns, I will bring no stones
but I will feel their bones breaking in my grasp,
and I will feel the air leave their little lungs out onto my face,
because these weapons, they makes us weak
and these weapons, they make us cowards.
You believe in a god that gave you these hands but you don't know how to use them.
Track Name: The Crying Song
To say that I know anything as well as the back of my hand,
oh what a lie that would be. All I've been studying are my palms, with my elbows pressed against my knees. My hands they have that slight tremble
and my bottom lip has that slight quiver and my cheeks, they are wet, my cheeks they are soaking and my glasses, oh how they fog up as I exhale into the cradle that my hands have created for my face and for my head. This position is pathetic and cliche, I know, but I am stuck in this place.
Track Name: Dirty Threads
You and I, we have probably got just over a million thoughts. Together we could spill them out one by one and see where we connect dots and form knots with the ribbons in our brains that unravel with each word. With all my wounds and my dead friends, too much weight and dirty threads, I've wished to changed my choice a hundred times or two. On the other side of my muscle I have bone. It's all worth it, I met you. On the other side of your muscle you have bone, too. Its all worth it, I met you.
Track Name: Baby, Oh Baby
Baby, oh baby, what do we have here?
Someone is trying to disappear,
from the eye of production, from the eye of try.
Baby, oh baby, what do we have here?
Someone is trying to live with no care,
but we know they will too soon disappear.
Baby, oh baby, what do we do next?
You're laughing and crying and asking whats best,
but we don't have an answer, no we have no clue.
Baby, oh baby, what do we do next?
Your heart is beating right through your chest,
I can feel it, darling I hear it, but no one could have guessed.
When the sun rises, make your day fulfilled before its good night.
You came, you saw, you couldn't conquer it all.
Track Name: Fruit Flies
Poured myself a glass of wine,
looked into my cup and I just sigh.
Wanted to taste it for what it is,
and to drown the stresses of the hours.
But you god damn fruit flies,
that infest my house in the day and the night,
you beat me to it.
You god damn fruit flies,
I'm flattered you think I have good taste in wine,
But don't you know,
I was the one who wanted to drown.
Track Name: Ice Cubes
I would like to hold your head deep into a bucket of ice cubes. It would cause pain but it would not be the death of you. It would cause pain but it would not drown you. What a shame, we want you dead. What a shame, oh what a shame. What a shame, for its just a dream in my head.
But depending on how I'm feeling at the end of the hour when all the ice melts and your face is so cold and pruned, I may just wait for you to stop trying. I want to watch you try just as hard to survive.
So you better hope those eyelashes of yours will help you flutter your weight out of the water. If they have seen what you have seen, they must be so strong. Strong enough to let you sleep your head down at night. If it were up to me, I wouldn't let you sleep your head down at night. If it were up to me, I wouldn't let you sleep your head down another night.
Track Name: Colorado Kidnapper
If I said yes, I really meant no
I don't want you to go
And I promise that I'll try and be the best I can be, for you
If I said hate, I really meant love
I just want you know, that I'll always be there for you
No matter who comes or goes
So this ones for you
Little brother
For wherever you go
Wherever you are
When you said &go to hell&
I always knew you meant well
Despite how hard you would try
Well I've seen you cry maybe once, maybe twice
And you've seen me cry plenty of goddamn times
I hope you've realized
That you've helped me get by
So this ones for you
Little brother
For wherever you go
Wherever you are
Track Name: Guts
If I could extract a seed from your baby brother's heart, I would plant it back into this earth right where he belongs. I promise I would watch him grow into the most beautiful maple tree that New England has ever seen or that Los Angeles could ever believe in. And as the seasons change, its colors, they will too turn into a dark red, just like, oh just like. And through the wind and through the cold, your leaves will stay, they will not fall or crumble but they will stay up to remind me that maybe I have been wrong, maybe I have been wrong all along. After they say that we have died, maybe somewhere we are still alive.
Track Name: The Sofa Blues
You're enjoying the role that you've given to yourself as the devil on the shoulders of all your friends but I guess I'd rather be remembered for greater actions than being the one who never did what I said I would. But stubborn and impractical won't get you out of the sofa blues.
Throwing a tantrum in a common living space, I missed the point. You said you proved a point to yourself so you're satisfied but I missed the point. And stubborn and impractical won't get you out of the sofa blues.
You say you're just trying to enjoy the fun while you're young, but aren't we all? Is this fun when you glue yourself to the couch and you tape these beer cans into the palms of your hands?
You fell asleep with the TV on again.
Track Name: Scattered Brains
You don't need to worry about me. I can control my body. I can control the T.V.'s that are inside my brain. In my scattered brain.
The scene use to play so frequently, each time just as untruthfully but now I have it right like cement in my brain. In my scattered brain.
I have seen us all die and all survive. I have seen myself act like a hero and us charging for the back door in my brain. In my scattered brain.}

我要回帖

更多关于 root什么意思 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信