Android自定义图文跑马灯效果
之前的需求是用FlipperView来实现上下翻动效果,但是发现数据有点长会造成一屏幕放不下三条数据,后来改为跑马灯,但是只有文字的跑马灯TextView自己就有,但是要求文字后面带一个小图标怎们办呢?
(1).MainActivity.java:
publicclassHomeFragmentextendsBaseFragment{ privateMarqueeScrollmMarqueeScroll; privateint[]name_tv={R.id.name_tv1,R.id.name_tv2,R.id.name_tv3,R.id.name_tv4,R.id.name_tv5,R.id.name_tv6}; privateTextView[]name_tvs=newTextView[6]; privateint[]name_iv={R.id.name_iv1,R.id.name_iv2,R.id.name_iv3,R.id.name_iv4,R.id.name_iv5,R.id.name_iv6}; privateImageView[]name_ivs=newImageView[6]; privateArrayListmFlipperList=newArrayList (); @Override publicViewonCreateView(LayoutInflaterinflater,ViewGroupcontainer,BundlesavedInstanceState){ Viewview=inflater.inflate(R.layout.fragment_homenews,null); mMarqueeScroll=(MarqueeScroll)view.findViewById(R.id.MarqueeScroll); for(inti=0;i >responsBaseBean=JSON.parseObject(mFlipperData, newTypeReference >>(){ }); mFlipperList=responsBaseBean.getResult(); if(mFlipperList!=null&&mFlipperList.size()>0){ //ForegroundColorSpan为文字前景色,BackgroundColorSpan为文字背景色 ForegroundColorSpanspan1=newForegroundColorSpan(0xFF535353); ForegroundColorSpanspan2=newForegroundColorSpan(0xFF346699); for(inti=0;i (2).fragment_homenews.xml:布局文件引用控件
(3).MarqueeScroll.java:自定义HorizontalScrollView
publicclassMarqueeScrollextendsHorizontalScrollViewimplementsRunnable{ privateViewinner; privateBitmapbitmap=null; /** *滚动步长 */ privateintstep=1; privateintx; privateintwidth; privateintpWidth; privateintpHeight; publicMarqueeScroll(Contextcontext,AttributeSetattrs){ super(context,attrs); setBackgroundColor(0xFFE1F4FF); } @Override protectedvoidonFinishInflate(){ if(getChildCount()==1){ inner=getChildAt(0); } } @Override protectedvoidonDetachedFromWindow(){ super.onDetachedFromWindow(); handler.removeCallbacks(this); } @Override protectedvoidonDraw(Canvascanvas){ if(getWidth()==0){ android.view.ViewGroup.LayoutParamslp=getLayoutParams(); lp.width=pWidth; lp.height=pHeight; setLayoutParams(lp); } if(bitmap==null&&inner!=null){ width=inner.getMeasuredWidth(); bitmap=Bitmap.createBitmap(width,inner.getHeight(),Config.RGB_565); Canvascanvas1=newCanvas(bitmap); inner.draw(canvas1); pWidth=getWidth(); pHeight=getHeight(); if(inner!=null){ removeViewInLayout(inner); inner=null; } run(); } if(bitmap!=null){ intnowX=x; nowX-=step; canvas.drawBitmap(bitmap,nowX,0,null); if(nowX<0){ canvas.drawBitmap(bitmap,width+nowX/*+space*/,0,null); } if(nowX<=-width){ nowX=0; } x=nowX; } super.onDraw(canvas); } privateHandlerhandler=newHandler(){ @Override publicvoidhandleMessage(Messagemsg){ super.handleMessage(msg); } }; @Override publicvoidrun(){ invalidate(); handler.postDelayed(this,1); } }以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。