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);
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。