精华内容
下载资源
问答
  • 手掌中的十字架PPT模板.pptx,图中有一双合在一起的,手掌中间有十字架的图案。颜色以黑白灰为主,适用于宗教信仰、基督、耶稣等主题。
  • 十字架的意义

    千次阅读 2016-03-21 10:55:45
    感谢神原文地址:十字架的意义作者:1767945293 转载 标签: 杂谈 分类:半小时布道 十字架的意义 上一堂课我们学习了罪是从心里开始产生的。心中所怀藏的罪,会以行为表现出来。雅1:15,...
    感谢神
    原文地址:十字架的意义 作者:1767945293

    上一堂课我们学习了罪是从心里开始产生的。心中所怀藏的罪,会以行为表现出来。雅1:15,“私欲既怀了胎,就生出罪来;罪既长成,就生出死来。”那么私欲在哪里呢?私欲就在心中。罪是从心中开始产生的,在思想中就会形成罪。所以我们意识到了为了解决罪的行为,必须要解决心中罪的问题。

    太5:28,“只是我告诉你们:凡看见妇女就动淫念的,这人心里已经与她犯奸淫了。”圣经告诉我们上帝看我们人类的时候,上帝鉴察众人的心,知道一切心思意念。所以解决罪的问题就是得到新的心,不仅改变表面上的行为,要以耶稣基督的心为心。

    上帝的律法定了我们的罪,它所要求的就是死亡。因为人犯罪,结局就是破坏宇宙的秩序。罪人为了得到饶恕,需要有十字架。因为创造人类的上帝,替我们担当了罪的刑罚,所以我们才成为了得到饶恕的人。救赎不仅能饶恕我们的罪,也能医治我们的心,改变我们的心。罪人的救赎不仅包含饶恕的意义,福音当中也包含医治的能力。

    只有人类在破坏着宇宙的秩序,为了使宇宙得到恢复,人的心要变得与上帝的诫命相符合。如果仍然去犯已经得到饶恕的罪,那么饶恕的意义在哪里呢?上帝饶恕我们是为了让我们不再去犯罪。诗51:10,“上帝啊,求你为我造清洁的心,使我里面重新有正直的灵。”主的创造是完全的,并不是部分性的。愿大家记住,上帝拯救我们的福音的大能就是创造的大能。

    现在来学习“十字架的意义”第二堂课。耶稣到底在十字架上为我们做了什么,我们才得到了饶恕和拯救呢?大家是否深深地理解十字架的意义吗?耶稣到底做了什么,使我们现在可以得到饶恕,并带着永生的盼望而继续活着呢?我们似乎知道这个道理,但还是模模糊糊。换句话说,我们好像知道这个道理,但是又不能很清楚地加以说明。所以,我们今天就按着圣经、从逻辑上一同来研究。

    十字架的意义(下)

    彼前2:24,“他被挂在木头上,亲身(in his own body)担当了我们的罪。”

    这里说耶稣是以他自己的身体担当了我们的罪。这是什么意思呢?别人怎么可以替我们担当我们的罪呢?怎么还可以用身体来担当呢?用身体怎样担当罪呢?就像担担子似的,这是象征性的意义呢?还是实际上真的用身体来担当了我们的罪呢?如果是真的用身体担当了罪,那么是指肉体上的痛苦呢?还是包含了某些更深的意义呢?我们要知道这是非常重要的事情。圣经告诉我们,他被挂在木头上,亲身担当了我们的罪。这段话语非常重要,可以带给我们非常多的理解。

    赛53:4-6,“他诚然担当我们的忧患,背负我们的痛苦;我们却以为他受责罚,被上帝击打苦待了。哪知他为我们的过犯受害,为我们的罪孽压伤。因他受的刑罚,我们得平安;因他受的鞭伤,我们得医治。我们都如羊走迷,各人偏行己路,耶和华使我们众人的罪孽都归在他身上。”

    《以赛亚书》53章描写的是耶稣受苦难的内容,我们把这一章称为“苦难的一章”。旧约圣经预言弥赛亚的时候,在这一章里记录了耶稣所受的苦难。也就是指上帝把我们的罪背负在了耶稣身上,换句话说,耶稣亲身替我们承担了罪的后果。耶稣替我们担当了罪,这是什么意思呢?

    来10:5-7,“所以,基督到世上来的时候,就说:‘上帝啊,祭物和礼物是你不愿意的,你曾给我预备了身体,燔祭和赎罪祭是你不喜欢的。那时我说:上帝啊,我来了,为要照你的旨意行,我的事在经卷上已经记载了。’”这些话语是从旧约圣经中引用过来的。

    诗40:6-8,“祭物和礼物,你不喜悦,你已经开通我的耳朵。燔祭和赎罪祭非你所要。那时我说:看哪,我来了!我的事在经卷上已经记载了。我的上帝啊,我乐意照你的旨意行,你的律法在我心里。”

    《诗篇》当中有很多地方预言到了耶稣,第40篇是其中之一。《诗篇》40篇预言了耶稣成为弥赛亚的事情,和道成肉身来到这地上生活的一生。这也是预言将来耶稣以弥赛亚的身份要到这地上受苦难的章节之一。

    在耶稣到这地上来之前数百年,旧约圣经中早已仔细地预言到耶稣将要诞生在哪里,到了哪一年受洗,要受到什么样的对待,怎样被抓,背叛他的人会是谁,什么时候以什么样的方式牺牲,他穿在身上的衣服将会以拈阄的方法被分,并且也已经写到了他的骨头一根也不可折断,他将会埋葬在谁的坟墓里,什么时候再复活,等等。

    诗40:11-12,“耶和华啊,求你不要向我止住你的慈悲。愿你的慈爱和诚实常常保佑我。因有无数的祸患围困我,我的罪孽追上了我,使我不能昂首。这罪孽比我的头发还多,我就心寒胆战。”

    这段话多么令人惊讶!这里说“我的罪孽”!大家说这是什么意思?大家想一想,耶稣说:“这罪孽比我的头发还多”,是什么意思呢?圣经告诉我们:耶稣的罪孽比头发还多。这一章节早已预言了耶稣在客西马尼园、在十字架上经受痛苦而呐喊的情景:“我的罪孽追上了我,使我不能昂首”,耶稣到底为什么有那么多的罪呢?“这罪孽比我的头发还多,我就心寒胆战”,他到底有什么样的罪呢?

    耶稣在十字架上被钉死的时候,大声喊着说:“以罗伊,以罗伊!拉马撒巴各大尼?”(翻出来就是:我的上帝,我的上帝,为什么离弃我?)”(可15:34)当时他无法昂首,他感到自己就像罪人一样被离弃了。耶稣的罪为什么会那么多呢?我们的罪,你和我所犯的罪,都担在了耶稣身上!所以,他尝到了罪孽比头发还多、无法仰望上天的罪人的心情。

    我们犯罪的时候,身上会起什么反应?对一个人撒谎之后,第二天又与他见面的时候,在你们身上会有什么样的反应?心跳加快,脸色变红,冒冷汗,心里不舒服,呼吸困难,感到羞耻,对审判产生惧怕。如果没有这些现象的话,这个人是没有良心的人,是不是呢?

    但是无罪的耶稣在十字架上经历了这样的经验。他替我们担当了罪。从亚当开始,所有的人类所犯的罪,压在了耶稣的心头。这就是耶稣基督的苦难。实际上,耶稣在心灵和身体、良心和头脑中,都感受到了我们犯罪的时候所感受到的罪责感和痛苦。他替我们在十字架上已经体验了这一切。耶稣亲身担当了我们所有的过犯。耶稣在十字架上替我们担当了罪,这并不是象征性的意义。

    大家还记得耶稣在客西马尼园中受到的痛苦吗?耶稣说:“我心里甚是忧伤,几乎要死。”“他就稍往前走,俯伏在地祷告说:我父啊,倘若可行,求你叫这杯离开我;然而,不要照我的意思,只要照你的意思。”(太26:38-39)当时耶稣受到了什么样的痛苦呢?他为什么觉到那么痛苦?他为什么祷告说“求你叫这杯离开我”?这是什么杯?

    这是上帝愤怒之杯,是上帝审判的杯。这个杯就是在没有中保的时候,在没有恩典、没有慈悲的时候,上帝对罪的愤怒和审判的杯。耶稣替我们经历了我们所犯的罪的刑罚和后果,为了让我和大家不要受到对罪的审判。

    审判的愤怒之杯在将来什么时候要临到谁呢?耶稣在审判罪人的时候,最后将会发生这样的事情。这个愤怒中毫无上帝的慈悲。在恩典时期结束之后,犯罪的罪人永远灭亡的痛苦,是非常可怕的杯,是非常可怕的经验。

    现在是因为上帝的慈悲,所以罪人心中还能有某些程度的安息和平安。但是大家知道吗?恩典时期结束之后,圣灵收回之后,恶人的心就变得越来越恶。耶稣把所有替他们担当的罪归在他们自己身上时,换句话说,再也没有中保者,再也没有耶稣阻拦这些事情,他们将会陷入到非常令人可怕的苦恼当中。这种痛苦比肉体上的痛苦更可怕。

    耶稣从客西马尼园开始经历替我们担当罪的经验。他替我们担当了没有上帝慈悲的审判的经验。我们要知道,耶稣在客西马尼园中的苦难,并不是肉体上的痛苦,其中包含了比这个更深的意义。

    耶稣的死并不是殉道的死亡。许多人殉道的时候,是带着快乐的心情、唱着赞美诗歌而殉道的。举个例子,士每拿教会的长老走向火刑柱的时候,看着火焰却好像是玫瑰花。彼得也是边唱赞美诗,边倒钉十字架而死的。他们不都是快乐地赞美而殉道了吗?但是耶稣的痛苦是替我们担当罪的神圣的痛苦。这并不是殉道者的死。耶稣说:“我的上帝,我的上帝!为什么离弃我?”这并不是一般殉道者的死亡。

    十字架的意义(下)

    耶稣从来没有与天父分离过。但是我们的罪使耶稣与天父隔绝了。赛59:2,“罪孽使你们与上帝隔绝。”替我们担当罪的耶稣,感受到了与天父永远分离的感觉。愿大家想象一下,替罪人担当了罪的刑罚,承受了上帝的愤怒,正在断气的上帝的羔羊!

    正因为这样,我们才可以理解以上的话语:“因有无数的祸患围困我,我的罪孽追上了我,使我不能昂首;这罪孽比我的头发还多,我就心寒胆战。”我们的主替罪人感受到罪,这就是“亲身担当了我们的罪”的意思。

    因耶稣替我们走过了我们应走的路,所以我们的主能从罪的刑罚中释放我和大家。这位主不仅有能力饶恕我们的罪,也有能力让我们不再陷入到罪中,他能帮助我们成为义人。林后5:21,“上帝使那无罪的,替我们成为罪,好叫我们在他里面成为上帝的义。”所以,只有得到罪的饶恕的人,才能感受到无罪的快乐和平安!

    虽然我们现在也犯罪,但是主的审判没有临到我们,现在我们心中仍然有安息和平安,是因为耶稣一直替我们担当着罪。我们要知道,十字架并不只是在髑髅地就结束了,上帝的痛苦并没有在髑髅地上结束。髑髅地的痛苦表明了只要我们罪人仍在犯罪的话,上帝心中就会一直有痛苦。愿大家不要忘记这一点。

    耶稣在十字架上的经历,是指恶人在没有上帝慈悲的时候,将要尝到的第二次死亡的经历。恶人要死两次。第二次的死是在没有慈悲和恩典的情况下,承担自己所犯的一切罪的可怕的死,是永远的死。义人死的时候并不会说:“上帝啊!你为什么离弃我?”

    赛53:12,“所以,我要使他与位大的同份,与强盛的均分掳物;因为他将命倾倒,以致于死,他也被列在罪犯之中。他却担当多人的罪,又为罪犯代求。”

    耶稣为了我们“将命倾倒,以致于死”,这是什么意思?当我们老死或病死,都是属于第一次死亡。在其中有复活的盼望。我们可以唱着赞美诗,以喜乐的心情死去,我们有永生的盼望。但是恶人的第二次死是审判的死,是刑罚的死,再也没有复活的希望了。大家知道吗?耶稣在十字架上替我们经历了本应由我们来承受的充满上帝愤怒的死亡。这就是替我们担当罪的刑罚的意思。

    为了让我们成为义人,我们的主成为了有罪的,他成了罪本身。所有的人类所犯下的罪,加在了十字架上的耶稣身上,耶稣成了罪本身。耶稣为了饶恕我们的罪,已经替我们承担了应该由我们来承担的罪。为了拯救我们,替我们担当了永远的死亡,就算是不能复活,也宁愿牺牲自己,——这就是十字架所彰显的爱!

    正是因为耶稣的十字架,现在我们可以维持生命,继续存活。大家记得吗?因耶稣的十字架,所有的人类,在还不认识上帝的时候,在还没有悔改的时候,一出生在世,就得到了恩典的时期。我们能活到60岁、70岁或80岁,这样的恩典时期是因为耶稣替我们钉死在十字架上,承担了罪的刑罚。所以,我们在活着的这段时间内,要发现所信的真理和救赎!

    耶稣说:“我就心寒胆战。”(诗40:12)英文的表达是“My heart failed me”,意思就是“我的心脏不能跳动了。”诗22:14,“我心在我里面如蜡熔化。”这也是说明耶稣的心脏破裂了。这是非常重要的内容。

    耶稣在十字架上死的时候,并不是因肉体的痛苦而死的。耶稣的死并不是因钉子钉在手上,或肋旁被枪扎,而是因为我们的罪。我们的罪成了一根刺,穿透了他的心脏,使之破裂。耶稣感受到替我们承担的罪所带来的罪责感,因这种压力而无法继续存活。所有人类所犯的罪担一下子加在了耶稣身上,所以他无法承受,因心脏破裂而死。

    耶稣的心脏破裂之后,突然就死了。从他的肋旁流出了水和血,这就是医学上的证据。因他的心脏破裂,所以血液积满了胸腔。随后,为了知道耶稣到底有没有死,一位罗马兵丁拿着长长的枪扎进了耶稣的肋旁。枪从肋旁一直扎到了胸腔,于是积在胸腔里的血流了出来,所流出来的是水和血。我们可以知道,当血液开始凝固之后,上面一层血清就像水,红色的血球就沉淀在下面。

    为了赎回我们所犯的罪,而付出的代价就是十字架。知道了这一切,却还不愿意把自己的心献给上帝,有这样的人吗?我们要承认自己是罪人,要悔改,并祈求饶恕。要把心献给上帝,要抛弃罪。上帝会给我们赐下得胜的能力。“我们若忽略这么大的救恩,怎能逃罪呢?”(来2:3)拒绝耶稣的大爱,是很大的罪。在世上我们连父母的爱也不能拒绝,我们又怎能拒绝创造主惊人的牺牲和爱呢?就算是现在你去教会,却没有真正悔改并重生的话,那你还是不知道耶稣的十字架的人。

    魔鬼在十字架面前引诱耶稣说:“耶稣啊,人类不可能因你的死而得救。你看看人类吧,多忘恩负义啊!没有用的,你快放弃他们回到天上去吧。你没有必要死。你看看你的门徒在哪里?不都逃跑了吗?现在有谁跟随你呢?所有的教会都在嘲笑你,祭司长、长老还有法利赛人不都在骂你吗?没人相信你。没有用的,你快升到天上去吧!”

    这个时候耶稣想:“就算是得救的人稀少,我也要替他们死。”他下定决心,就算是看不到复活的希望,也愿意替我们牺牲。“父啊,赦免他们!因为他们所作的,他们不晓得。”(路23:34)大家想一想耶稣所做的祷告!耶稣让我们看到了他就算是不能从坟墓里复活,也愿意替我们死的惊人的决定。

    我们正是被这样的爱所感动,才会相信耶稣!我们是有盼望的!你处在绝望当中吗?还是没有悔改当中?愿你现在就到耶稣的十字架面前!

     

    展开全文
  • 在使用eclipse或者myeclipse时,已经不是一两次碰到这个情况了,鼠标箭头变成黑色十字架,其实变成那样不碍事,但是总感觉不大自在,我郁闷了好久,其实这只是一个很简单的误,可能是你在格式化代码的时候按错了...
    在使用eclipse或者myeclipse时,已经不是一两次碰到这个情况了,鼠标箭头变成黑色十字架,其实变成那样不碍事,但是总感觉不大自在,我郁闷了好久,其实这只是一个很简单的手误,可能是你在格式化代码的时候按错了快捷键造成的,遇到此问题,一键搞定:ALT+SHIFT+A,就能搞定,并且这个快捷键可以在鼠标箭头变成一个十字架和正常情况下的倾斜箭头之间来回切换!
     
    
                              使用eclipse或者myeclipse时,鼠标变成黑色十字架解决办法

    展开全文
  • 展开全部按ALT+F11,输入如下代码(建议复制粘贴,不易出现误):PrivateSubWorksheet_SelectionChange(ByValTargetAsRange)IfTarget.EntireColumn.Address=Target.AddressThenCells.Interior.ColorIndex=...

    展开全部

    按ALT+F11,输入如下代码(建议复制粘贴,不易出现手误):Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Target.EntireColumn.Address = Target.Address Then

    Cells.Interior.ColorIndex = xlNone

    Exit Sub

    End If

    If Target.EntireRow.Address = Target.Address Then

    Cells.Interior.ColorIndex = xlNone

    Exit Sub

    End If

    Cells.Interior.ColorIndex = xlNone

    Rows(Selection.Row & ":" & Selection.Row + Selection.Rows.Count - 1).Interior.ColorIndex = 10

    Columns(Selection.Column).Resize(, Selection.Columns.Count).Interior.ColorIndex = 10

    End Sub

    自己可以改ColorIndex,直到出现满意的颜32313133353236313431303231363533e59b9ee7ad9431333337626132色。以下是截图:

    展开全文
  • 项目要求:一个十字架效果,水平和垂直滑动来选择每一子项。刚开始做的时候,以为很简单, 两个Gallery,一个水平,一个垂直放置就OK了,后来一看Gallery不能垂直滑动(网上貌似已经有了)。然后想为什么自己不能写...

    项目要求:一个十字架效果,水平和垂直滑动来选择每一子项。刚开始做的时候,以为很简单, 两个Gallery,一个水平,一个垂直放置就OK了,后来一看Gallery不能垂直滑动(网上貌似已经有了)。然后想为什么自己不能写一个了,花了两天功夫,终于做出效果来了,效果图如下:



    1.代码目录结构


    HVScrollbar.java:这个类负责承载每一个子项,其中有一个变量isVertical来判断水平或者垂直。

    HVFrameLayout.java:这个类承载水平和垂直方向的滑动条,此类最关键的功能是控制滑动条的滑动,这点也是此功能的难点。

    IconStyle.java:一个activity,不做介绍。

    2.HVScrollbar.java

    此类控制每一个子项的显示位置,并且显示水平或者垂直,在onMeasure和onLayout方法中控制。

    @Override
    	protected void onLayout(boolean changed, int l, int t, int r, int b) {
    		// TODO Auto-generated method stub
    		FrameLayout.LayoutParams flp = (FrameLayout.LayoutParams)getLayoutParams();
    		int count = getChildCount();
    		for(int i = 0; i < count; i++)
    		{
    			View child = getChildAt(i);
    			ViewGroup.LayoutParams vlp = child.getLayoutParams();
    			if(vlp instanceof LayoutParams)
    			{
    				LayoutParams lp = (LayoutParams)vlp;
    				child.layout(lp.x, lp.y, lp.x + lp.width, lp.y+lp.height);//根据LayoutParams来布局
    			}
    		}
    	}
    	
    	
    
    	@Override
    	protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    		// TODO Auto-generated method stub
    		int count = getChildCount();
    		int widthSpecSize = 0;
    		int heightSpecSize = 0;
            for (int i = 0; i < count; i++) {
                View child = getChildAt(i);
                ViewGroup.LayoutParams vlp = child.getLayoutParams();
                if(vlp instanceof LayoutParams)
                {
                	LayoutParams lp = (LayoutParams)vlp;
                	if(isVertical)
                	{
                		//垂直方向设置子项的top和left
                		lp.x = 0;
                		lp.y = lp.height * i;
                		widthSpecSize = lp.width;
                		heightSpecSize +=lp.height;
                	}
                	else
                	{
                		//水平方向设置子项的top和left
                		lp.y = 0;
                		lp.x = lp.width * i;
                		heightSpecSize = lp.height;
                		widthSpecSize +=lp.width;
                	}
                	int childWidthMeasureSpec = MeasureSpec.makeMeasureSpec(
                			lp.width, 
                			MeasureSpec.EXACTLY);
                    int childheightMeasureSpec = MeasureSpec.makeMeasureSpec(
                    		lp.height,
                            MeasureSpec.EXACTLY);
                    child.measure(childWidthMeasureSpec, childheightMeasureSpec);//设置子项的宽度和高度(每一子项都一样)
                }
            }
           
            setMeasuredDimension(widthSpecSize, heightSpecSize);//滑动条的实际宽度和高度
    	}
    
    
    	
    
    	static class LayoutParams extends ViewGroup.LayoutParams
    	{
    		
    		int x;//子项Left
    		int y;//子项Top
    
    		public LayoutParams(int width, int height) {
    			super(width, height);
    		}
    		
    	}

    3.HVFrameLayout.java

    此类控制垂直和水平滑动条的滑动,最关键的是两个方法onInterceptTouchEvent(判断是否滑动)和onTouchEvent(控制滑动以及放手后的滑动动画)。

    onInterceptTouchEvent

    @Override
    	public boolean onInterceptTouchEvent(MotionEvent ev) {
    		// TODO Auto-generated method stub
    		mFirstLayout = false;
    		acquireVelocityTrackerAndAddMovement(ev);//手指滑动速度跟踪
    		int action = ev.getAction();
    		final float x = ev.getX();
            final float y = ev.getY();
    		switch(action)
    		{
    		case MotionEvent.ACTION_DOWN:
    			//手指放下,初始化
    			mDownX = mLastX = x;
    			mDownY = mLastY = y;
    			mTotalX = mTotalY = 0;
    			mAnchorX = (getWidth() - mCellWidth) / 2;
    			mAnchorY = (getHeight() - mCellHeight) / 2;
    			mMinMarginTop = mAnchorY - mVertical.getHeight() + mCellHeight;
    			mMaxMarginTop = mAnchorY;
    			mMinMarginLeft = mAnchorX - mHorizontal.getWidth() +  mCellWidth;
    			mMaxMarginLeft = mAnchorX;
    			
    			if(isTouchInH(x, y) || isTouchInV(x, y))
    			{
    				mState = STATE_RESET;
    			}
    			else
    			{
    				mState = STATE_OUT;
    			}
    			
    			break;
    		case MotionEvent.ACTION_MOVE:
    			if(mState == STATE_RESET)
    			{
    				determineScrollingStart(x, y);//此方法决定是否滑动
    			}
    		
    			break;
    		case MotionEvent.ACTION_UP:
    		default:
    			mState = STATE_RESET;
    			releaseVelocityTracker();
    			break;
    		}
    		
    		return mState == STATE_SCROLLING;
    	}

    determineScrollingStart

    private void determineScrollingStart(float x, float y)
    	{
    		final int xDiff = (int) Math.abs(x - mLastX);
    		final int yDiff = (int) Math.abs(y - mLastY);
    		boolean xMoved = xDiff > mTouchSlop;
    		boolean yMoved = yDiff > mTouchSlop;
    		boolean isAnimationRunning = isAnimationRunning();
    		//开始计算是否开始滑动
    		if((xMoved || yMoved) && !isAnimationRunning)
    		{
    			mState = STATE_SCROLLING;
    			mTotalX += x - mLastX;
    			mTotalY += y - mLastY;
    			mLastX = x;
    			mLastY = y;			
    			boolean isTouchInH = isTouchInH(mDownX, mDownY);
    			boolean isTouchInV = isTouchInV(mDownX, mDownY);
    			if(isTouchInH && isTouchInV)
    			{
    				//此处为手指滑动在水平和垂直滑动条的公共区域,需要用速度跟踪来判断滑动方向:手指滑动在水平方向和垂直方向
    				//的值的比较
    				mVelocityTracker.computeCurrentVelocity(1000, mMaximumVelocity);
    				mIsVertical = Math.abs(mVelocityTracker.getXVelocity()) < Math.abs(mVelocityTracker.getYVelocity());
    			}
    			else if(isTouchInH)
    			{
    				//水平方向
    				mIsVertical = false;
    			}
    			else
    			{
    				//垂直方向
    				mIsVertical = true;
    			}
    			
    		}
    	}

    onTouchEvent

    @Override
    	public boolean onTouchEvent(MotionEvent event) {
    		// TODO Auto-generated method stub
    		mFirstLayout = false;
    		acquireVelocityTrackerAndAddMovement(event);
    		int action = event.getAction();
    		final float x = event.getX();
            final float y = event.getY();
    		switch(action)
    		{
    		case MotionEvent.ACTION_DOWN:
    			mDownX = mLastX = x;
    			mDownY = mLastY = y;
    			mTotalX = mTotalY = 0;
    			
    			
    			break;
    		case MotionEvent.ACTION_MOVE:
    			if(mState == STATE_SCROLLING)
    			{
    				float deltaX = x - mLastX;
    				float deltaY = y - mLastY;
    				//滑动距离超过1时才开始滑动
    				if(mIsVertical && Math.abs(deltaY) > 1.0f)
    				{
    					
    					if(mVertical.getLayoutParams() instanceof FrameLayout.LayoutParams)
    					{
    						//计算垂直滑动条的topMargin,通过调用requestLayout来控制布局,实现滑动条跟着手指滑动的动画
    						FrameLayout.LayoutParams flp = (FrameLayout.LayoutParams)mVertical.getLayoutParams();
    						int topMargin = (int)(flp.topMargin + deltaY);
    						if(topMargin < mMinMarginTop)
    						{
    							topMargin = mMinMarginTop;
    						}
    						else if(topMargin > mMaxMarginTop)
    						{
    							topMargin = mMaxMarginTop;
    						}
    						flp.topMargin = topMargin;
    						requestLayout();
    					}
    					mTotalX += deltaX;
    					mTotalY += deltaY;
    					mLastX = x;
    					mLastY = y;
    				}
    				else if(!mIsVertical && Math.abs(deltaX) > 1.0f)
    				{
    					//同垂直方向
    					if(mHorizontal.getLayoutParams() instanceof FrameLayout.LayoutParams)
    					{
    						FrameLayout.LayoutParams flp = (FrameLayout.LayoutParams)mHorizontal.getLayoutParams();
    						int leftMargin = (int)(flp.leftMargin + deltaX);
    						if(leftMargin < mMinMarginLeft)
    						{
    							leftMargin = mMinMarginLeft;
    						}
    						else if(leftMargin > mMaxMarginLeft)
    						{
    							leftMargin = mMaxMarginLeft;
    						}
    						flp.leftMargin = leftMargin;
    						requestLayout();
    					}
    					mTotalX += deltaX;
    					mTotalY += deltaY;
    					mLastX = x;
    					mLastY = y;
    				}
    			}
    			break;
    		case MotionEvent.ACTION_UP:
    			if(mState == STATE_SCROLLING)
    			{
    				//此处用来处理手指放开后的动画
    				final VelocityTracker velocityTracker = mVelocityTracker;
                    velocityTracker.computeCurrentVelocity(1000, mMaximumVelocity);
                    int velocityX = (int)velocityTracker.getXVelocity();
                    int velocityY = (int)velocityTracker.getYVelocity();
                    int duration = 500;
                    
                    if(mHorizontalAnimation != null)
                    {
                    	mHorizontalAnimation.cancel();
                    	mHorizontalAnimation = null;
                    }
                    
                    if(mVerticalAnimation != null)
                    {
                    	mVerticalAnimation.cancel();
                    	mVerticalAnimation = null;
                    }
                    
                    if(mIsVertical)
                    {
                    	if(mVertical.getLayoutParams() instanceof FrameLayout.LayoutParams)
    					{
                    		final FrameLayout.LayoutParams flp = (FrameLayout.LayoutParams)mVertical.getLayoutParams();
                    		//根据速度跟踪(velocityTracker)来计算目的topMargin,此处借鉴AbsListView
                    		//滑动后的处理(getSplineFlingDistance)。
                    		int dstTopMargin = Math.min(Math.max(mMinMarginTop, getFinalDistance((int)getSplineFlingDistance(velocityY)) + flp.topMargin), mMaxMarginTop);
    						
                    		//属性动画
                    		mVerticalAnimation = ObjectAnimator.ofInt(mVertical, "topMargin", flp.topMargin, dstTopMargin);
                    		mVerticalAnimation.setDuration(mAnimationDuration);
                    		mVerticalAnimation.setInterpolator(new DecelerateInterpolator());
                    		mVerticalAnimation.addUpdateListener(new AnimatorUpdateListener() {
    							
    							@Override
    							public void onAnimationUpdate(ValueAnimator animation) {
    								// TODO Auto-generated method stub
    								//根据topMargin的变化,通过调用requestLayout,来实现动画
    								flp.topMargin = ((Integer)animation.getAnimatedValue()).intValue();
    								requestLayout();
    							}
    						});
                    		mVerticalAnimation.start();
    					}
                    	
                    }
                    else
                    {
                    	if(mHorizontal.getLayoutParams() instanceof FrameLayout.LayoutParams)
    					{
                    		final FrameLayout.LayoutParams flp = (FrameLayout.LayoutParams)mHorizontal.getLayoutParams();
                    		int dstLeftMargin = Math.min(Math.max(mMinMarginLeft, getFinalDistance((int)getSplineFlingDistance(velocityX)) + flp.leftMargin), mMaxMarginLeft);
    						
                    		mHorizontalAnimation = ObjectAnimator.ofInt(mHorizontal, "leftMargin", flp.leftMargin, dstLeftMargin);
                    		mHorizontalAnimation.setDuration(mAnimationDuration);
                    		mHorizontalAnimation.setInterpolator(new DecelerateInterpolator());
                    		mHorizontalAnimation.addUpdateListener(new AnimatorUpdateListener() {
    							
    							@Override
    							public void onAnimationUpdate(ValueAnimator animation) {
    								// TODO Auto-generated method stub
    								flp.leftMargin = ((Integer)animation.getAnimatedValue()).intValue();
    								requestLayout();
    							}
    						});
                    		mHorizontalAnimation.start();
    					}
                    }
                    
    			}
    			mState = STATE_RESET;
    			releaseVelocityTracker();//release VelocityTracker
    			break;
    		default:
    			
    			break;
    		}
    		
    		return true;
    	}

    4.问题和缺陷

    (1)速度跟踪还不是太了解。

    (2)此功能的滑动借鉴了Launcher的滑动处理,使用时总感觉滑动有点不协调,滑动处理不是很好,这方面肯定有待改进。

    (3)此功能不容易拓展,当时只是想完成这个功能,做出效果。


    5.总结

    这是我第一次写这么长的博客,其实也不长,代码贴的比较多,讲的也不详细。做了一个小demo,欢迎交流。

     

    (demo链接:http://download.csdn.net/detail/whuthm/6417691






    展开全文
  • 绘制类似图像 数据排列 添加原图图层 修改图层坐标系 手动划线,shift+鼠标左键画直线,双击线可改动(9.0版本) object properties——coordinates——Units(scale)调整线x/y值。
  • bmap、百度地图设置手型和十字架

    千次阅读 2018-08-23 10:06:07
    1、手型 map.setDefaultCursor("pointer"); 2、十字架型 map.setDefaultCursor("crosshair");
  • 黑马王子讲座:黄金十字架战法

    千次阅读 2015-11-05 12:38:35
     2010.08.29 《左支右撑,择日飞奔,黄金十字架的妙用》  2010.11.08 《十字架前守三长,长腿点峰有长阳》  2010.11.10 《简说“十字线战法”进出密码》  2010.11.16 《十字线战法:预报股的进出时机...
  • 最近工作上用到了Mesh这个组件,需要用这个组件画图,拿十字架。 需要用到的组件,Mesh ,MeshRender,MeshFilter。 首先我们了解一下三者的关系,MeshFilter从Mesh拿到需要画图的数据,然后给MeshRender进行...
  • 在使用Myeclipse和eclipse中,鼠标光标和键盘光标变成十字架和小黑块的时候,非常的不舒服,这样也不影响写东西,但是看着别扭,而且我好多次遇到这种情况了, 郁闷了很久,其实这只是一个简单的误,可能是在...
  • 人生的十字架

    千次阅读 2010-08-02 22:28:00
    ­他想,上帝啊,这个十字架太沉重了,我可以把十字架砍掉一块!­于是他动手砍了起来!砍掉之后走起来,的确是轻松了很多,他的步伐也不由得加快了。就这样走啊走啊!走着走着,他觉得肩上的十字架还是很沉,很重!...
  • “虚无的十字架”是什么意思?阅读完,就能明白了.... 故事梗概 抛开书中的故事线,单纯的从故事发生的主线来说,更能让人理解一点。广告公司的员工中原道正和妻子滨冈小夜子有一个女儿,有一天小夜子出去买东西...
  • 在使用eclipse或者myeclipse时,已经不是一两次碰到这个情况了,鼠标箭头变成黑色十字架,其实变成那样不碍事,但是总感觉不大自在,我郁闷了好久,其实这只是一个很简单的误,可能是你在格式化代码的时候按错了...
  • 转:人生的十字架

    2010-07-13 12:58:00
    一篇很古老的文章了,今天再见,依然很有感触,看后值得我们思考,尤其是当我们抱怨时...第一幅漫画中,每个人都背负着一个沉重的十字架,在缓慢而艰难地前行! 途中,有一个人忽然停了下来。他在想着什么! ...
  • 英国科学家马修-马森和皮埃尔-米切尔最近公布的研究成果显示,基督时代的十字架刑罚并不仅仅只有受难图上那一种形式。科学家在以色列境内发现了一个同时代被钉死在十字架上的年轻人的坟墓,他们在精心研究后认为,...
  • 问题来源:由于两个包的功能都一样,在写功能是直接在工作目录中复制过来的导致了SVN提交时出现蓝色加号解决办法:1、将更改的功能包复制出来放在本地,然后删掉工程,重新从vpn中检出,然后手动的一步一步的新建包...
  • 目录 1.turtle库 2.各个函数的使用 3.分析佩奇 1.turtle库 turtle(海龟)库是turtle绘图体系的Python实现 ...20,30) #嘴 body(-32,-8) #身体 hands(-56,-45) # foot(2,-177) #脚 tail(148,-155) #尾巴 done() main()
  • 1.触摸时白色圆圈的中心不在十字架中心的问题, 以A23平台为例,是在com_android_server_input_InputManagerService.cpp文件, outSpriteIcon->hotSpotX = pointerIcon.hotSpotX-10; outSpriteIcon->hotSpotY = ...
  • halcon联合C#测量十字Mark中心

    千次阅读 2019-10-11 17:33:54
    halcon联合C#测量十字Mark中心halcon测量十字架
  • 用CSS添加鼠标样式-箭头、小手、十字… //小手样式 cursor:pointer;...pointer, hand :形光标 crosshair :十字标 wait :等待光标 text :I形光标 vertical-text :水平I形光标 no-drop :不可拖动光
  • 这里有一个sidewide的计算,是需求里要求计算十字架边宽度的。 Mat houghGray; Mat houghthre; cvtColor(hough_output, houghGray, CV_BGR2GRAY);//转灰度 threshold(houghGray, houghthre, 100, 255, ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,134
精华内容 3,253
关键字:

十字架手