实现的效果:

是一个滚动的公告栏,是这样的:



可以看到这个公告栏一方面是滚动,另外一方面是可点击。


实现的思路:

1.textView放在ViewFlipper中实现滑动效果(可设置左右、或者上下滚动),很明显这应该是自定义view;

2.利用textView的点击事件即可实现点击;


OK,先看看自定义view的代码:

public class MarqueeTextView extends LinearLayout {    private Context mContext;    private ViewFlipper viewFlipper;    private View marqueeTextView;    private String[] textArrays;    private MarqueeTextViewClickListener marqueeTextViewClickListener;    public MarqueeTextView(Context context) {        super(context);        mContext = context;        initBasicView();    }    public MarqueeTextView(Context context, AttributeSet attrs) {        super(context, attrs);        mContext = context;        initBasicView();    }    public void setTextArraysAndClickListener(String[] textArrays, MarqueeTextViewClickListener marqueeTextViewClickListener) {//1.设置数据源;2.设置监听回调(将textView点击事件传递到目标界面进行操作)        this.textArrays = textArrays;        this.marqueeTextViewClickListener = marqueeTextViewClickListener;        initMarqueeTextView(textArrays, marqueeTextViewClickListener);    }    public void initBasicView() {//加载布局,初始化ViewFlipper组件及效果        marqueeTextView = LayoutInflater.from(mContext).inflate(R.layout.marquee_textview_layout, null);        LayoutParams layoutParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);        addView(marqueeTextView, layoutParams);        viewFlipper = (ViewFlipper) marqueeTextView.findViewById(R.id.viewFlipper);        viewFlipper.setInAnimation(AnimationUtils.loadAnimation(mContext, R.anim.slide_in_bottom));//设置上下的动画效果(自定义动画,所以改左右也很简单)        viewFlipper.setOutAnimation(AnimationUtils.loadAnimation(mContext, R.anim.slide_out_top));        viewFlipper.startFlipping();    }    public void initMarqueeTextView(String[] textArrays, MarqueeTextViewClickListener marqueeTextViewClickListener) {        if (textArrays.length == 0) {            return;        }        int i = 0;        viewFlipper.removeAllViews();        while (i < textArrays.length) {            TextView textView = new TextView(mContext);            textView.setText(textArrays[i]);            textView.setOnClickListener(marqueeTextViewClickListener);            LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);            viewFlipper.addView(textView, lp);            i++;        }    }    public void releaseResources() {        if (marqueeTextView != null) {            if (viewFlipper != null) {                viewFlipper.stopFlipping();                viewFlipper.removeAllViews();                viewFlipper = null;            }            marqueeTextView = null;        }    }}


然后,主Activity异常简单(还是封装得好):

public class MainActivity extends AppCompatActivity {    private MarqueeTextView marqueeTv;    private String [] textArrays = new String[]{"this is content No.1","this is content No.2","this is content No.3"};    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        marqueeTv = (MarqueeTextView) findViewById(R.id.marqueeTv);        marqueeTv.setTextArraysAndClickListener(textArrays, new MarqueeTextViewClickListener() {            @Override            public void onClick(View view) {                startActivity(new Intent(MainActivity.this,AnotherActivity.class));            }        });    }    @Override    protected void onDestroy() {        marqueeTv.releaseResources();        super.onDestroy();    }}

Git地址>>

更多相关文章

  1. android基础知识---重写软键盘回车的点击事件
  2. Android(安卓)Frame 动画
  3. Android仿ios年龄、生日、性别滚轮效果
  4. 利用monkey测试android,入门级用户可能遇见的错误及解决办法
  5. TextView常用属性介绍
  6. Android(安卓)TableLayout中的使用说明
  7. [转]: 两分钟彻底让你明白Android(安卓)Activity生命周期(图文)!
  8. Android(安卓)studio 百度地图开发(8)地图已标记POI点和搜索POI点
  9. Android——UI篇:RecyclerView设置点击效果无效的解决办法和item

随机推荐

  1. Android 源码分析——阅读源码工具选用
  2. Android 绘制一个Loading动画__向图片中
  3. Android怎么实现定时任务及闹钟?
  4. Android 对话框弹出(支持Android 6.0及其
  5. Android Camera从Camera HAL1到Camera HA
  6. 【嗨兴科技】Android(安卓)Studio 3 在导
  7. Android高仿网易云音乐播放界面
  8. 如何在ubuntu10.04环境下编译android
  9. Android listView典型错误分析(经验体会)
  10. Android Handler机制之总目录