网易新闻客户端电脑版怎么设置显示摘要

您现在的位置:&&>&&>&&>&&>&&>&&>&正文
网易新闻客户端实习总结范文
来源:  【】 
初来乍到 小心翼翼也许因为是自己的第一次实习,来网易报到的那天,感觉自己就像一个参观者一样,非常认真却也非常小心地观察着周围的一切。到了工位,也是自己一个人默默装着电脑,不敢发出太大的响声。老师教后台基本使用时,感觉比上课紧张多了,生怕漏了什么重要的步骤,而第二天就正式上岗的信息更是让我略显惶恐。于是,原本3点就能下班的我愣是在公司留到了5点,一遍遍地复习着那些后来觉得无比简单的步骤,虽然当时觉得像天书一样。下班之前,我还傻傻地问了老师一句“老师,我可以下班了吗?”引来老师哄堂大笑,并跟我说你两个小时前就可以下班了,下班不用向我汇报的。我无法想像当时自己脸上的表情,绝对尴尬到一种境界。正式上岗后,迎接我的第一份工作是更新本地新闻,这是新员工入职最先接触的一块内容。因为知道第一印象的重要性,我对这项最简单的任务也十分上心,但每天都会来的“黑色半小时”让我一次次地受挫。所谓黑色半小时就是每天下午1点半至2点之间,高编老师都会来审查我的更新质量并指出我的错误。老师说话直,点评起来行云流水的,每次看到对话框中显示“正在输入”的字样都会让我吓出一身冷汗,生怕自己又犯了什么错误。当然,不得不说,也正是这样的经历让我对这项工作始终保持着比较高的热情。那段时间,我的心情好坏基本与老师指出我的不足多少形成了正比,每天下班回家我都期待着第二天快些到来,因为我希望第二天我被指出的错误可以再少一点。也许这是学生心理的表现,你可以说这是稚嫩,但我始终觉得这样挺好。小心,认真,始终保持工作热情,也许是刚开始实习时我们最需要做到的。首次挨批 略有所悟工作了一段时间,我接触到的工作范围越来越多,从最开始的更新本地新闻,到更新wap站新闻到真正进入部门工作的核心,更新网易新闻客户端内容,我似乎感觉自己实习得越来越顺利了,直到第一次的通宵班经历给我带来的冲击。通宵班是每个普通都需要经历的,仅有1人值班的状况让我自己一开始十分抗拒,生怕自己一个人无法应付,但班已经排了下来,我也只能硬着头皮上了。但谁知,自己的第一次通宵班运气就如此不佳,碰上后台故障,前后台衔接出现了问题,后台更新的一切内容在手机端都无法显示。我发现问题的时间大概是凌晨4点,当时自己抱着侥幸心理,想着大概过一会儿自己就会好的吧,但一个小时过去后问题还存在。我知道后台有技术部门紧急维修人员的电话,但当时觉得自己就是个实习生,还是等老师们来了再解决也是一样的,而且通宵看新闻的人应该不是很多,影响应该不大,并且我始终对于大半夜打电话吵醒别人感到不好意思。于是,到了7点大家来上班时,我向老师汇报了情况,当我说出我并没有给技术打电话时,老师以差不多质问的语气问我:为什么没打电话?!我傻了,知道自己事情办挫了。后来就在办公室里,当着大家的面,我被老师劈头盖脸说了一顿,当时真想找个地洞钻进去。因为上的是通宵班,过了一会儿我就回家补觉去了。醒来后,我回想着老师说的话,似乎明白了什么。确实,我虽然是实习生,但是自己不应该总把自己当成实习生。我现在在这个部门工作,虽说只拿着比别人少一半都不止的工资,但自己做的事情与其他人毫无差异,我就是个“正式员工”。既然如此,做事时就不要考虑“一个实习生这样做合适吗?”“实习生没这权力吧?”“我就是个实习生,应该没什么大不了的”这样的问题。既然后台公布了技术人员的电话,就是让我们随时可以联系,我们不需要考虑是否会打扰到他人休息,因为这是他们的工作也是我们的职责。同样的道理,到一个单位实习,你要做的是像其他同事一样工作,甚至做得更好,不要觉得自己是实习生而感到格格不入,因为这也是你的工作。做事小心没错,为他人着想也没错,但过头了便是错的,因为那时候自己只会变得优柔寡断。虽然这件事让我一度十分害怕高编老师,但也要感谢这件事,让我找到了自己在这一阶段的正确位置。数次突发 逐渐成熟接触网站新闻业务的人都能体会“突发”两个字的意义。对我来说,这两个字意味着“五雷轰顶”+“最快、最大限度地迈向业务成熟”。“五雷轰顶”是因为一旦遇到突发,午饭或晚饭就不用想了,还要在此状态下精神高度紧绷,抢速度,抢时间,还要避免出错,就像触电的感觉一样,结束后只想瘫坐在椅子上发呆,恨不得就这样一直坐到下班。而“业务成熟”则是显而易见的,无论你对后台还多么不熟悉,此时就必须熟悉,无论你搭过几个专题,速度如何,此时你就必须在最短的时间里完成,“突发”在逼着你进步,而这正是你在这个岗位应该做到的。不知道算不算幸运,半年里,我大大小小的突发事件遇到了数十次,并且几乎都是在下午班只有三个当班的情况下(换句话说就是,没有老师可以求助,人手也不算充裕,该怎么办全靠自己判断以及合理的分分工配合),也许因为碰到突发的次数实在是太多太多,我与一位经常一起上下午班的同事开玩笑说:“我们两个以后不能一起上班,一起上就来突发”。在这无数次突发事件中,印象最深、影响最深的还是第一次碰到的突发――薄熙来事件。薄熙来事件时,我们在下午五点就已经得知相关消息,之后又知道网管办通知所有网站总编六点半必须去开会并且不能请假,就知道必有事发生。由于已知事件相关内容,我们便商量着把事情都做好了,同事写好了标题和摘要,我则将各种类型的图片都找了一遍,包括薄熙来单人照,薄熙来夫妇照,薄熙来与王立军拼接照,并且都裁成了我们需要的两种尺寸,就等着和各大网站比手快。结果7点新闻联播的完全没有任何相关的消息,只有一条坑爹的抵制网络谣言的信息,于是大家觉得华丽丽地被耍了。本以为事情到此结束,结果9点收到公司最高指示邮件,称10点将发布薄熙来王立军事件的相关报道,于是我们的神经又高度紧绷了起来,结果到了10点还是啥也没有,当时真的已经快崩溃了。结果不知道是幸运还是不幸,11点准点(也就是正好下班时间),人民网终于出了快讯,我们便第一时间将push发了出去。但这中间的小插曲还是让我吓出了一身冷汗。由于新闻中心最开始给的标题写的是“双规”,我们为了图快,最开始也用的是“双规”的说法(并且这一操作是由我来完成的),虽然已在第一时间进行了修改,但由于手机缓存以及有可能的矽统bug问题还是在有些手机端显示了“双规”字样,这让我们三人着实有些紧张了,要知道这要是让网管办发现了后果不堪设想。还好,当时已是深夜,除了较为关注此事件同时又很关注客户端动向的同事外,发现此错误的并不多,这让我们都松了一口气。当天晚上,我们将近12点才下班,这算是我唯一的一次加班。这次高度敏感的突发处理经历,让我十分兴奋,因为虽然此次我还只算是打了个下手,但我已基本了解了这样的事情该如何处理。在日后的正常工作中,自己也越来越熟练,处理突发事件也越来越灵活,并且渐渐可以担当起主要操的角色。我也能感觉到实习的中后期自己应对工作更加的成熟自如,提高是显著的。而高编老师在实习鉴定中写到的“后劲足”的评语也印证了我自己的想法。而这确实要多多感谢这数十次的突发事件处理经历,虽然饿肚子的感觉真是挺不好受的。单位学校 亦有雷同此次实习,让我首次踏入了所谓的社会,但经历后发现,其实与在学校有许多共通之处。第一、无论在哪儿,大家都喜欢虚心求教,对待工作认真负责的人。当你作为一个新人进入到一个集体时,许多大家十分熟练的工作对于你来说是十分陌生的。刚入职时的简单培训绝对不足以应付你将遇到的一切。这时,就需要你虚心求教,要敢问,会问。也许有一天你会被分配到自己从来没有接触过的任务,这不要紧,周围那么多同事都可以问,当面不好意思可以网上问,大家年龄相差不大,不会拒绝你的请求。此外,并不是所有的问题都要等到遇到了再来求教,你要是在群里看到大家在谈论的一个工作你还不会,虽然还没分配到你做,但你可以先学,找个比较清闲的时间请教同事,这对你对大家都有好处。第二、机会不会自己找上门,需要自己去争取。有了机会,才有进步的可能。举个例子,当我刚接触wap站工作初期,一次高编老师问我们懂不懂代码,有一个wap站专题需要搭建,与我搭档的那位同事说不会,而我虽然是会的,但是经过一个寒假其实也有淡忘,所以我回了一句懂一些,老师就没有再说什么。但我马上意识到这应该是一次学习的机会,于是我在网上单独联系了高编老师,问我是否可以试一试,老师果然也没有拒绝。虽然后来我发现搭建wap站专题极其简单,与当时我们自己做网站天差地别,但我还是因此学到了相关知识,并且也在日后得到了多次单人搭建wap站专题的机会。第三、要主动与周围的同事沟通,哪怕是见面打个招呼,这是基本礼仪。有礼貌会让同事们对你有较好的第一印象,没人想要一个整天只懂蒙头工作不会与他人相处的同事,即使你只是自己害羞。此外,主动与同事沟通还可以帮助你在部门里工作生活得比较“舒坦”。闲暇时可以聊聊天,有困难时可以寻求建议(毕竟有问题老是问上级谁都是不好意思的),中午可以一起吃饭,一天的工作很轻快地便能度过。当然,做以上这些事的时候要注意,必须要有个度,不能没大没小,毕竟我们在年龄上是较小的,基本的尊重是必须的。网易 真的在做新闻网易,真的在做新闻,这是我这半年在网易新闻客户端实习期间对这个“东家”的评价。网易新闻客户端原本就是从网易新闻中心独立出来的一个部门,其中的许多同事都是从新闻中心过来的,因此我能够深深感受到网易做新闻时的那份严谨。当然,又由于做的是手机端内容,我们受到的监管要比pc端宽松许多,因此我们在做新闻报道方面更加自由也更加大胆,也就使得我们更能够实现自己的想法。在这里,我没见到“标题党”,并且这样的做法是被禁止的;在这里,新闻选择是自由的,但并不意味着什么都能上,即使出现了爆点,也需要在证实之后才能报道(例如一次其他家网站已然报道了北京几大银行取消异地或跨行取款手续费的新闻,而我们的高编并没有让我们立马跟进,而是直接打电话询问了几家银行,并得到了否定答案。之后,当然证实了那是一条假消息,而对手家却早已迫不及待地发了错误的push);在这里,我们把自己放在用户的立场上不断调整自己的服务。在我看来,做新闻不仅仅在于敢说,还在于怎么说,什么时候说,而网易在这方面确实表现出色。结语将近半年的实习,要离开的那一周,确实十分不舍。那一周很多同事请吃饭为我送行。高编老师和副主编姐姐也找了个中午请我吃饭,并且问我是否想要留下来,我以自己想再四处看看婉拒了,而副主编姐姐则说明年毕业时如果想要回来随时。真的觉得自己很幸运,到了个好公司、好部门,碰到了好领导、好同事,实习得十分开心。在这里我知道了自己的能力,知道了自己的不足,得到了锻炼,而收获的知识对我来说也确实十分受用。许多人都调侃我真的爱上了这家公司、这个部门、这款我每天进行更新的APP,遇到个好朋友我一定会上前说“手机给我下,我给你装个网易新闻客户端吧,可好用了!”也许吧,这是我的性格使然,但这个地方也确实给我带来了太多感动。1&&&
文章责编:gaoxiaoliang& 看了本文的网友还看了
?&&()?&&()?&&()?&&()?&&()?&&()
12345678910
12345678910
12345678910
12345678910
12345678910
12345678910
? ?   ? ?   ? ?   ? ?   ? ?
? ?   ? ?   ?
?   ? ?    ? ?   ? ?   ? ?   ? ?
? ?   ? ?
| ││││
实用工具 |
| 大全 | 大全
     |
版权声明:如果网所转载内容不慎侵犯了您的权益,请与我们联系,我们将会及时处理。如转载本内容,请注明出处。
Copyright & 2004-
 网 All Rights Reserved 
中国科学院研究生院权威支持(北京) 电 话:010- 传 真:010-工具类服务
编辑部专用服务
作者专用服务
传统纸媒的手机新闻客户端如何深入人心——以《人民日报》和《网易新闻》的对比为例
随着网络、科技等的进步,人们的阅读习惯也产生了很大变化,越来越多的受众习惯于通过网络,在手机、平板电脑等移动终端上阅读新闻.而《人民日报》等传统纸媒虽然打造了自己的手机新闻客户端,却难以像门户网站如《网易新闻》《搜狐新闻》等的客户端那么个性化、灵活化,难以满足受众的需求.主要分析传统纸媒如《人民日报》的手机新闻客户端的优缺点,以及如何吸取门户网站如《网易新闻》手机客户端的优势为己所用,从而更好地深入人心.
作者单位:
中国传媒大学电视学院,北京,100000
年,卷(期):
机标分类号:
在线出版日期:
本文读者也读过
相关检索词
万方数据知识服务平台--国家科技支撑计划资助项目(编号:2006BAH03B01)(C)北京万方数据股份有限公司
万方数据电子出版社工具类服务
编辑部专用服务
作者专用服务
新闻客户端发展现状与策略——以网易新闻客户端为例
新闻客户端发展概说
移动互联网的发展态势如火如荼,2015年新闻客户端之间的竞争愈演愈烈.
1.发展现状
新闻客户端依托移动互联网的技术革新浪潮和网民的增加,成为融传统媒体、网络媒体功能于一体的一种移动终端应用.艾媒咨询发布的《2014年中国手机新闻客户端用户研究报告》显示:2014年,手机网民在移动端资讯获取首选方式上,手机新闻客户端最受青睐,占比为35.8%,手机新闻客户端在资讯丰富程度、操作方便性、内容广度和深度方面,有较强优势,因而成为手机网民获取资讯的首选方式.①随着用户体验需求的日益精细与深化,各新闻媒体在移动互联网繁荣的背景下迅速转变观念,高度重视新闻客户端的研发与推广.
作者单位:
河北大学新闻传播学院
年,卷(期):
在线出版日期:
本文读者也读过
相关检索词
万方数据知识服务平台--国家科技支撑计划资助项目(编号:2006BAH03B01)(C)北京万方数据股份有限公司
万方数据电子出版社模拟网易新闻客户端界面
这几天找工作闲来没事,偶然在一个上面看到有人模拟网易新闻客户端首页顶部那个效果,一时兴起,也来自己动手完整地模拟一个,包括顶部的特效组件和底部的类似于TabHost的组件。下面就动手一步一步地Coding...
二、效果截图
本来想找个软件动态截图,但是好像没找着。。。这样的话,看不出来点击之后的动态切换效果了。以后找着了再来替换。
三、底部类似TabHost组件切换效果的实现&
为了便于大家亲自动手实践,这里的讲解顺序就按照开发的顺序来讲,所以先做这个底部的&TabHost&,然后再具体来实现里面的五个页面布局。
类似于图3到图5三张图片所示,当点击&新闻&或者&话题&或者&投票&的时候,有个稍微透明的红色背景的ImageView做相应的移动。这其实就是给ImageView设置了一个位移动画,当点击事件触发的时候,首先切换点击后的图片(有点类似于按下效果的图片),然后开始移动铺在上面的红色图片,让用户感觉到有移动的过程,增强用户体验。
关于这个位移动画,需要用到TranslateAnimation类,移动的核心代码也就几行,因为这个移动功能不但在底部控件上使用,而且在顶部也使用了,所以,为了以后使用方便,我们把它单独定义在一个类里面MoveBg.java
& View Code
package com.and.netease.
import android.view.V
import android.view.animation.TranslateA
public class MoveBg {
&&&& * 移动方法
&&&& * @param v
&&&& *&&&&&&&&&&& 需要移动的View
&&&& * @param startX
&&&& *&&&&&&&&&&& 起始x坐标
&&&& * @param toX
&&&& *&&&&&&&&&&& 终止x坐标
&&&& * @param startY
&&&& *&&&&&&&&&&& 起始y坐标
&&&& * @param toY
&&&& *&&&&&&&&&&& 终止y坐标
&&& public static void moveFrontBg(View v, int startX, int toX, int startY, int toY) {
&&&&&&& TranslateAnimation anim = new TranslateAnimation(startX, toX, startY, toY);
&&&&&&& anim.setDuration(200);
&&&&&&& anim.setFillAfter(true);
&&&&&&& v.startAnimation(anim);
里面的各个参数有相应的说明。
然后就来开发这个带有TabHost功能的组件。根据文档说明,在xml中定义TabHost的时候,必须使用TabWidget和FrameLayou两个组件,而且它们的id也应该是android:id=&@android:id/tabs&和android:id=&@android:id/tabcontent&,由于提供的TabHost界面不怎么好看,所以这里想到自己来定义它,但是这两个组件是不可以不写的,这里,把TabWidget界面隐藏掉了,取而代之的是RadioGroup组件来实现底部类似于TabHost的控件。具体布局代码如main.xml
& View Code
&?xml version=&1.0& encoding=&utf-8&?&
&LinearLayout xmlns:android=&&
&&& android:layout_width=&fill_parent&
&&& android:layout_height=&fill_parent&
&&& android:orientation=&vertical& &
&&& &TabHost
&&&&&&& android:id=&@android:id/tabhost&
&&&&&&& android:layout_width=&fill_parent&
&&&&&&& android:layout_height=&fill_parent& &
&&&&&&& &LinearLayout
&&&&&&&&&&& android:layout_width=&fill_parent&
&&&&&&&&&&& android:layout_height=&fill_parent&
&&&&&&&&&&& android:orientation=&vertical& &
&&&&&&&&&&& &FrameLayout
&&&&&&&&&&&&&&& android:id=&@android:id/tabcontent&
&&&&&&&&&&&&&&& android:layout_width=&fill_parent&
&&&&&&&&&&&&&&& android:layout_height=&0.0dip&
&&&&&&&&&&&&&&& android:layout_weight=&1.0& &
&&&&&&&&&&& &/FrameLayout&
&&&&&&&&&&& &TabWidget
&&&&&&&&&&&&&&& android:id=&@android:id/tabs&
&&&&&&&&&&&&&&& android:layout_width=&fill_parent&
&&&&&&&&&&&&&&& android:layout_height=&wrap_content&
&&&&&&&&&&&&&&& android:visibility=&gone& /&
&&&&&&&&&&& &RelativeLayout
&&&&&&&&&&&&&&& android:id=&@+id/layout_bottom&
&&&&&&&&&&&&&&& android:layout_width=&fill_parent&
&&&&&&&&&&&&&&& android:layout_height=&wrap_content& &
&&&&&&&&&&&&&&& &RadioGroup
&&&&&&&&&&&&&&&&&&& android:id=&@+id/radiogroup&
&&&&&&&&&&&&&&&&&&& android:layout_width=&fill_parent&
&&&&&&&&&&&&&&&&&&& android:layout_height=&wrap_content&
&&&&&&&&&&&&&&&&&&& android:layout_gravity=&bottom&
&&&&&&&&&&&&&&&&&&& android:background=&@drawable/bottombg&
&&&&&&&&&&&&&&&&&&& android:gravity=&center_vertical&
&&&&&&&&&&&&&&&&&&& android:orientation=&horizontal& &
&&&&&&&&&&&&&&&&&&& &RadioButton
&&&&&&&&&&&&&&&&&&&&&&& android:id=&@+id/radio_news&
&&&&&&&&&&&&&&&&&&&&&&& android:layout_width=&wrap_content&
&&&&&&&&&&&&&&&&&&&&&&& android:background=&@drawable/tab_selector_news&
&&&&&&&&&&&&&&&&&&&&&&& android:button=&@null&
&&&&&&&&&&&&&&&&&&&&&&& android:checked=&true& /&
&&&&&&&&&&&&&&&&&&& &RadioButton
&&&&&&&&&&&&&&&&&&&&&&& android:id=&@+id/radio_topic&
&&&&&&&&&&&&&&&&&&&&&&& android:layout_width=&wrap_content&
&&&&&&&&&&&&&&&&&&&&&&& android:background=&@drawable/tab_selector_topic&
&&&&&&&&&&&&&&&&&&&&&&& android:button=&@null& /&
&&&&&&&&&&&&&&&&&&& &RadioButton
&&&&&&&&&&&&&&&&&&&&&&& android:id=&@+id/radio_pic&
&&&&&&&&&&&&&&&&&&&&&&& android:layout_width=&wrap_content&
&&&&&&&&&&&&&&&&&&&&&&& android:background=&@drawable/tab_selector_pic&
&&&&&&&&&&&&&&&&&&&&&&& android:button=&@null& /&
&&&&&&&&&&&&&&&&&&& &RadioButton
&&&&&&&&&&&&&&&&&&&&&&& android:id=&@+id/radio_follow&
&&&&&&&&&&&&&&&&&&&&&&& android:layout_width=&wrap_content&
&&&&&&&&&&&&&&&&&&&&&&& android:background=&@drawable/tab_selector_follow&
&&&&&&&&&&&&&&&&&&&&&&& android:button=&@null& /&
&&&&&&&&&&&&&&&&&&& &RadioButton
&&&&&&&&&&&&&&&&&&&&&&& android:id=&@+id/radio_vote&
&&&&&&&&&&&&&&&&&&&&&&& android:layout_width=&wrap_content&
&&&&&&&&&&&&&&&&&&&&&&& android:background=&@drawable/tab_selector_vote&
&&&&&&&&&&&&&&&&&&&&&&& android:button=&@null& /&
&&&&&&&&&&&&&&& &/RadioGroup&
&&&&&&&&&&& &/RelativeLayout&
&&&&&&& &/LinearLayout&
&&& &/TabHost&
&/LinearLayout&
注意里面的RadioButton组件,当初测试的时候没有设置android:button=&@null&,只设置了background=&@drawable/...&属性(这是一个selector属性,可以在xml文件中定义一些控件的按下效果,或者获取焦点等不同状态下的资源),出现点击不切换图片的问题。
对应的selector文件对应如下tab_selector_news.xml
& View Code
&?xml version=&1.0& encoding=&utf-8&?&
&selector xmlns:android=&&&
&&& &item android:drawable=&@drawable/current_news_tab& android:state_checked=&true&/&
&&& &item android:drawable=&@drawable/back_news_tab& android:state_checked=&false&/&
&/selector&
其它几个,只是替换不同的图片资源罢了,不再一一列出。这些资源文件放在res目录下的drawable文件夹下(如果没有,则新建)
有了布局文件,还需要在Activity中设置一下,为每个TabHost添加具体的Tab页面,如下
tabHost = getTabHost();
&&&&&&& tabHost.addTab(tabHost.newTabSpec(&news&).setIndicator(&News&).setContent(new Intent(this, TabNewsActivity.class)));
&&&&&&& tabHost.addTab(tabHost.newTabSpec(&topic&).setIndicator(&Topic&).setContent(new Intent(this, TabTopicActivity.class)));
&&&&&&& tabHost.addTab(tabHost.newTabSpec(&picture&).setIndicator(&Picture&).setContent(new Intent(this, TabPicActivity.class)));
&&&&&&& tabHost.addTab(tabHost.newTabSpec(&follow&).setIndicator(&Follow&).setContent(new Intent(this, TabFollowActivity.class)));
&&&&&&& tabHost.addTab(tabHost.newTabSpec(&vote&).setIndicator(&Vote&).setContent(new Intent(this, TabVoteActivity.class)));
当然,相应的目标Activity自然暂且随意创建
然后为RadioGroup设置选择改变事件监听器,当选择改变,改变TabHost中当前显示的Activity页面
private OnCheckedChangeListener checkedChangeListener = new OnCheckedChangeListener() {
&&&&&&& @Override
&&&&&&& public void onCheckedChanged(RadioGroup group, int checkedId) {
&&&&&&&&&&& switch (checkedId) {
&&&&&&&&&&& case R.id.radio_news:
&&&&&&&&&&&&&&& tabHost.setCurrentTabByTag(&news&);
&&&&&&&&&&&&&&&
&&&&&&&&&&& case R.id.radio_topic:
&&&&&&&&&&&&&&& tabHost.setCurrentTabByTag(&topic&);
&&&&&&&&&&&&&&&
&&&&&&&&&&& case R.id.radio_pic:
&&&&&&&&&&&&&&& tabHost.setCurrentTabByTag(&picture&);
&&&&&&&&&&&&&&&
&&&&&&&&&&& case R.id.radio_follow:
&&&&&&&&&&&&&&& tabHost.setCurrentTabByTag(&follow&);
&&&&&&&&&&&&&&&
&&&&&&&&&&& case R.id.radio_vote:
&&&&&&&&&&&&&&& tabHost.setCurrentTabByTag(&vote&);
&&&&&&&&&&&&&&&
&&&&&&&&&&& default:
&&&&&&&&&&&&&&&
&&&&&&&&&&& }
至此就实现了一个自定义的&TabHost&,接下来再添加那个移动的特效
是一个RelativeLayout布局,我只是在这个layout上面添加了一个ImageView,然后当点击的时候,移动它的位置来实现效果
private OnCheckedChangeListener checkedChangeListener = new OnCheckedChangeListener() {
&&&&&&& @Override
&&&&&&& public void onCheckedChanged(RadioGroup group, int checkedId) {
&&&&&&&&&&& switch (checkedId) {
&&&&&&&&&&& case R.id.radio_news:
&&&&&&&&&&&&&&& tabHost.setCurrentTabByTag(&news&);
//&&&&&&&&&&&&&&& moveFrontBg(img, startLeft, 0, 0, 0);
&&&&&&&&&&&&&&& MoveBg.moveFrontBg(img, startLeft, 0, 0, 0);
&&&&&&&&&&&&&&& startLeft = 0;
&&&&&&&&&&&&&&&
&&&&&&&&&&& case R.id.radio_topic:
&&&&&&&&&&&&&&& tabHost.setCurrentTabByTag(&topic&);
&&&&&&&&&&&&&&& MoveBg.moveFrontBg(img, startLeft, img.getWidth(), 0, 0);
&&&&&&&&&&&&&&& startLeft = img.getWidth();
&&&&&&&&&&&&&&&
&&&&&&&&&&& case R.id.radio_pic:
&&&&&&&&&&&&&&& tabHost.setCurrentTabByTag(&picture&);
&&&&&&&&&&&&&&& MoveBg.moveFrontBg(img, startLeft, img.getWidth() * 2, 0, 0);
&&&&&&&&&&&&&&& startLeft = img.getWidth() * 2;
&&&&&&&&&&&&&&&
&&&&&&&&&&& case R.id.radio_follow:
&&&&&&&&&&&&&&& tabHost.setCurrentTabByTag(&follow&);
&&&&&&&&&&&&&&& MoveBg.moveFrontBg(img, startLeft, img.getWidth() * 3, 0, 0);
&&&&&&&&&&&&&&& startLeft = img.getWidth() * 3;
&&&&&&&&&&&&&&&
&&&&&&&&&&& case R.id.radio_vote:
&&&&&&&&&&&&&&& tabHost.setCurrentTabByTag(&vote&);
&&&&&&&&&&&&&&& MoveBg.moveFrontBg(img, startLeft, img.getWidth() * 4, 0, 0);
&&&&&&&&&&&&&&& startLeft = img.getWidth() * 4;
&&&&&&&&&&&&&&&
&&&&&&&&&&& default:
&&&&&&&&&&&&&&&
&&&&&&&&&&& }
此处要记住移动的初始位置和起始位置就行了。Y坐标轴上不变,只横向移动。至此,这个功能实现完了
四、顶部按下效果实现
顶部和底部那个自定义控件的实现效果大体是一样的,唯一不同的就是,这个移动的不再是ImageView,而是一个TextView,在移动完成之后还需要改变这个TextView上的文字,仅此而已,而已文件如下layout_news.xml
&?xml version=&1.0& encoding=&utf-8&?&
&LinearLayout xmlns:android=&&
&&& android:layout_width=&fill_parent&
&&& android:layout_height=&fill_parent&
&&& android:orientation=&vertical& &
&&& &RelativeLayout
&&&&&&& android:id=&@+id/layout_top&
&&&&&&& android:layout_width=&match_parent&
&&&&&&& android:layout_height=&40dip&
&&&&&&& android:background=&#990000& &
&&&&&&& &ImageView
&&&&&&&&&&& android:id=&@+id/img_netease_top&
&&&&&&&&&&& android:layout_width=&wrap_content&
&&&&&&&&&&& android:layout_height=&wrap_content&
&&&&&&&&&&& android:layout_centerVertical=&true&
&&&&&&&&&&& android:layout_marginLeft=&10dip&
&&&&&&&&&&& android:src=&@drawable/netease_top& /&
&&&&&&& &TextView
&&&&&&&&&&& android:layout_width=&wrap_content&
&&&&&&&&&&& android:layout_height=&wrap_content&
&&&&&&&&&&& android:layout_centerVertical=&true&
&&&&&&&&&&& android:layout_toRightOf=&@+id/img_netease_top&
&&&&&&&&&&& android:text=&@string/news_top_left_text&
&&&&&&&&&&& android:textColor=&@android:color/white&
&&&&&&&&&&& android:textSize=&20sp& /&
&&&&&&& &ImageView
&&&&&&&&&&& android:layout_width=&wrap_content&
&&&&&&&&&&& android:layout_height=&wrap_content&
&&&&&&&&&&& android:layout_alignParentRight=&true&
&&&&&&&&&&& android:src=&@drawable/duoyun& /&
&&& &/RelativeLayout&
&&& &RelativeLayout
&&&&&&& android:id=&@+id/layout_title_bar&
&&&&&&& android:layout_width=&fill_parent&
&&&&&&& android:layout_height=&35dip&
&&&&&&& android:background=&@android:color/white&
&&&&&&& android:paddingLeft=&10dip&
&&&&&&& android:paddingRight=&10dip& &
&&&&&&& &LinearLayout
&&&&&&&&&&& android:layout_width=&fill_parent&
&&&&&&&&&&& android:layout_height=&match_parent&
&&&&&&&&&&& android:orientation=&horizontal& &
&&&&&&&&&&& &RelativeLayout
&&&&&&&&&&&&&&& android:id=&@+id/layout&
&&&&&&&&&&&&&&& android:layout_width=&match_parent&
&&&&&&&&&&&&&&& android:layout_height=&match_parent&
&&&&&&&&&&&&&&& android:layout_weight=&1& &
&&&&&&&&&&&&&&& &TextView
&&&&&&&&&&&&&&&&&&& android:id=&@+id/tv_title_bar_news&
&&&&&&&&&&&&&&&&&&& android:layout_width=&wrap_content&
&&&&&&&&&&&&&&&&&&& android:layout_height=&wrap_content&
&&&&&&&&&&&&&&&&&&& android:layout_centerInParent=&true&
&&&&&&&&&&&&&&&&&&& android:text=&@string/title_news_category_tops& /&
&&&&&&&&&&& &/RelativeLayout&
&&&&&&&&&&& &RelativeLayout
&&&&&&&&&&&&&&& android:layout_width=&match_parent&
&&&&&&&&&&&&&&& android:layout_height=&match_parent&
&&&&&&&&&&&&&&& android:layout_weight=&1& &
&&&&&&&&&&&&&&& &TextView
&&&&&&&&&&&&&&&&&&& android:id=&@+id/tv_title_bar_sport&
&&&&&&&&&&&&&&&&&&& android:layout_width=&wrap_content&
&&&&&&&&&&&&&&&&&&& android:layout_height=&wrap_content&
&&&&&&&&&&&&&&&&&&& android:layout_centerInParent=&true&
&&&&&&&&&&&&&&&&&&& android:text=&@string/title_news_category_sport& /&
&&&&&&&&&&& &/RelativeLayout&
&&&&&&&&&&& &RelativeLayout
&&&&&&&&&&&&&&& android:layout_width=&match_parent&
&&&&&&&&&&&&&&& android:layout_height=&match_parent&
&&&&&&&&&&&&&&& android:layout_weight=&1& &
&&&&&&&&&&&&&&& &TextView
&&&&&&&&&&&&&&&&&&& android:id=&@+id/tv_title_bar_play&
&&&&&&&&&&&&&&&&&&& android:layout_width=&wrap_content&
&&&&&&&&&&&&&&&&&&& android:layout_height=&wrap_content&
&&&&&&&&&&&&&&&&&&& android:layout_centerInParent=&true&
&&&&&&&&&&&&&&&&&&& android:text=&@string/title_news_category_play& /&
&&&&&&&&&&& &/RelativeLayout&
&&&&&&&&&&& &RelativeLayout
&&&&&&&&&&&&&&& android:layout_width=&match_parent&
&&&&&&&&&&&&&&& android:layout_height=&match_parent&
&&&&&&&&&&&&&&& android:layout_weight=&1& &
&&&&&&&&&&&&&&& &TextView
&&&&&&&&&&&&&&&&&&& android:id=&@+id/tv_title_bar_finance&
&&&&&&&&&&&&&&&&&&& android:layout_width=&wrap_content&
&&&&&&&&&&&&&&&&&&& android:layout_height=&wrap_content&
&&&&&&&&&&&&&&&&&&& android:layout_centerInParent=&true&
&&&&&&&&&&&&&&&&&&& android:text=&@string/title_news_category_finance& /&
&&&&&&&&&&& &/RelativeLayout&
&&&&&&&&&&& &RelativeLayout
&&&&&&&&&&&&&&& android:layout_width=&match_parent&
&&&&&&&&&&&&&&& android:layout_height=&match_parent&
&&&&&&&&&&&&&&& android:layout_weight=&1& &
&&&&&&&&&&&&&&& &TextView
&&&&&&&&&&&&&&&&&&& android:id=&@+id/tv_title_bar_science&
&&&&&&&&&&&&&&&&&&& android:layout_width=&wrap_content&
&&&&&&&&&&&&&&&&&&& android:layout_height=&wrap_content&
&&&&&&&&&&&&&&&&&&& android:layout_centerInParent=&true&
&&&&&&&&&&&&&&&&&&& android:text=&@string/title_news_category_science& /&
&&&&&&&&&&& &/RelativeLayout&
&&&&&&&&&&& &RelativeLayout
&&&&&&&&&&&&&&& android:layout_width=&match_parent&
&&&&&&&&&&&&&&& android:layout_height=&match_parent&
&&&&&&&&&&&&&&& android:layout_weight=&1& &
&&&&&&&&&&&&&&& &TextView
&&&&&&&&&&&&&&&&&&& android:id=&@+id/tv_title_bar_more&
&&&&&&&&&&&&&&&&&&& android:layout_width=&wrap_content&
&&&&&&&&&&&&&&&&&&& android:layout_height=&wrap_content&
&&&&&&&&&&&&&&&&&&& android:layout_centerInParent=&true&
&&&&&&&&&&&&&&&&&&& android:text=&@string/title_news_category_more& /&
&&&&&&&&&&& &/RelativeLayout&
&&&&&&& &/LinearLayout&
&&& &/RelativeLayout&
&/LinearLayout&
对应的Activity代码TabNewsActivity.java
package com.and.
import com.and.netease.utils.MoveBg;
import android.app.A
import android.graphics.C
import android.os.B
import android.view.G
import android.view.V
import android.view.View.OnClickL
import android.widget.RelativeL
import android.widget.RelativeLayout.LayoutP
import android.widget.TextV
public class TabNewsActivity extends Activity {
&&& RelativeL
&&& TextView tv_//需要移动的View
&&& TextView tv_bar_
&&& TextView tv_bar_
&&& TextView tv_bar_
&&& TextView tv_bar_
&&& TextView tv_bar_
&&& TextView tv_bar_
&&& int avg_width = 0;// 用于记录平均每个标签的宽度,移动的时候需要
&&& @Override
&&& protected void onCreate(Bundle savedInstanceState) {
&&&&&&& super.onCreate(savedInstanceState);
&&&&&&& setContentView(R.layout.layout_news);
&&&&&&& initViews();
&&& private void initViews() {
&&&&&&& layout = (RelativeLayout) findViewById(R.id.layout_title_bar);
&&&&&&& tv_bar_news = (TextView) findViewById(R.id.tv_title_bar_news);
&&&&&&& tv_bar_sport = (TextView) findViewById(R.id.tv_title_bar_sport);
&&&&&&& tv_bar_play = (TextView) findViewById(R.id.tv_title_bar_play);
&&&&&&& tv_bar_finance = (TextView) findViewById(R.id.tv_title_bar_finance);
&&&&&&& tv_bar_science = (TextView) findViewById(R.id.tv_title_bar_science);
&&&&&&& tv_bar_more = (TextView) findViewById(R.id.tv_title_bar_more);
&&&&&&& tv_bar_news.setOnClickListener(onClickListener);
&&&&&&& tv_bar_sport.setOnClickListener(onClickListener);
&&&&&&& tv_bar_play.setOnClickListener(onClickListener);
&&&&&&& tv_bar_finance.setOnClickListener(onClickListener);
&&&&&&& tv_bar_science.setOnClickListener(onClickListener);
&&&&&&& tv_bar_more.setOnClickListener(onClickListener);
&&&&&&& tv_front = new TextView(this);
&&&&&&& tv_front.setBackgroundResource(R.drawable.slidebar);
&&&&&&& tv_front.setTextColor(Color.WHITE);
&&&&&&& tv_front.setText(&头条&);
&&&&&&& tv_front.setGravity(Gravity.CENTER);
&&&&&&& RelativeLayout.LayoutParams param = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
&&&&&&& param.addRule(RelativeLayout.CENTER_VERTICAL, RelativeLayout.TRUE);
&&&&&&& layout.addView(tv_front, param);
&&& private OnClickListener onClickListener = new OnClickListener() {
&&&&&&& int startX;//移动的起始位置
&&&&&&& @Override
&&&&&&& public void onClick(View v) {
&&&&&&&&&&& avg_width = findViewById(R.id.layout).getWidth();
&&&&&&&&&&& switch (v.getId()) {
&&&&&&&&&&& case R.id.tv_title_bar_news:
&&&&&&&&&&&&&&& MoveBg.moveFrontBg(tv_front, startX, 0, 0, 0);
&&&&&&&&&&&&&&& startX = 0;
&&&&&&&&&&&&&&& tv_front.setText(R.string.title_news_category_tops);
&&&&&&&&&&&&&&&
&&&&&&&&&&& case R.id.tv_title_bar_sport:
&&&&&&&&&&&&&&& MoveBg.moveFrontBg(tv_front, startX, avg_width, 0, 0);
&&&&&&&&&&&&&&& startX = avg_
&&&&&&&&&&&&&&& tv_front.setText(R.string.title_news_category_sport);
&&&&&&&&&&&&&&&
&&&&&&&&&&& case R.id.tv_title_bar_play:
&&&&&&&&&&&&&&& MoveBg.moveFrontBg(tv_front, startX, avg_width * 2, 0, 0);
&&&&&&&&&&&&&&& startX = avg_width * 2;
&&&&&&&&&&&&&&& tv_front.setText(R.string.title_news_category_play);
&&&&&&&&&&&&&&&
&&&&&&&&&&& case R.id.tv_title_bar_finance:
&&&&&&&&&&&&&&& MoveBg.moveFrontBg(tv_front, startX, avg_width * 3, 0, 0);
&&&&&&&&&&&&&&& startX = avg_width * 3;
&&&&&&&&&&&&&&& tv_front.setText(R.string.title_news_category_finance);
&&&&&&&&&&&&&&&
&&&&&&&&&&& case R.id.tv_title_bar_science:
&&&&&&&&&&&&&&& MoveBg.moveFrontBg(tv_front, startX, avg_width * 4, 0, 0);
&&&&&&&&&&&&&&& startX = avg_width * 4;
&&&&&&&&&&&&&&& tv_front.setText(R.string.title_news_category_science);
&&&&&&&&&&&&&&&
&&&&&&&&&&& case R.id.tv_title_bar_more:
&&&&&&&&&&&&&&& MoveBg.moveFrontBg(tv_front, startX, avg_width * 5, 0, 0);
&&&&&&&&&&&&&&& startX = avg_width * 5;
&&&&&&&&&&&&&&& tv_front.setText(R.string.title_news_category_more);
&&&&&&&&&&&&&&&
&&&&&&&&&&& default:
&&&&&&&&&&&&&&&
&&&&&&&&&&& }
通过这种例子,我个人总结有两点需要掌握,一个是TranslateAnimation类的使用,另一个就是布局文件的嵌套使用,经验多了,慢慢就会有感觉了。以上仅代表我个人的一点点想法和总结,还请各位多多指教。(另外附上源代码地址)
作者& And.He
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'}

我要回帖

更多关于 网易新闻客户端 的文章

更多推荐

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

点击添加站长微信