直播app源码开源,Android 滚动的公告栏
直播app源码开源,Android 滚动的公告栏
1 | public class MarqueeTextView extends LinearLayout {<br> <br> private Context mContext;<br> private ViewFlipper viewFlipper;<br> private View marqueeTextView;<br> private String[] textArrays;<br> private MarqueeTextViewClickListener marqueeTextViewClickListener;<br> <br> public MarqueeTextView(Context context) {<br> super(context);<br> mContext = context;<br> initBasicView();<br> }<br> <br> <br> public MarqueeTextView(Context context, AttributeSet attrs) {<br> super(context, attrs);<br> mContext = context;<br> initBasicView();<br> }<br> <br> public void setTextArraysAndClickListener(String[] textArrays, MarqueeTextViewClickListener marqueeTextViewClickListener) { //1.设置数据源;2.设置监听回调(将textView点击事件传递到目标界面进行操作)<br> this.textArrays = textArrays;<br> this.marqueeTextViewClickListener = marqueeTextViewClickListener;<br> initMarqueeTextView(textArrays, marqueeTextViewClickListener);<br> }<br> <br> public void initBasicView() {//加载布局,初始化ViewFlipper组件及效果<br> marqueeTextView = LayoutInflater.from(mContext).inflate(R.layout.marquee_textview_layout, null);<br> LayoutParams layoutParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);<br> addView(marqueeTextView, layoutParams);<br> viewFlipper = (ViewFlipper) marqueeTextView.findViewById(R.id.viewFlipper);<br> viewFlipper.setInAnimation(AnimationUtils.loadAnimation(mContext, R.anim.slide_in_bottom));//设置上下的动画效果(自定义动画,所以改左右也很简单)<br> viewFlipper.setOutAnimation(AnimationUtils.loadAnimation(mContext, R.anim.slide_out_top));<br> viewFlipper.startFlipping();<br> }<br> <br> public void initMarqueeTextView(String[] textArrays, MarqueeTextViewClickListener marqueeTextViewClickListener) {<br> if (textArrays.length == 0) {<br> return;<br> }<br> <br> int i = 0;<br> viewFlipper.removeAllViews();<br> while (i < textArrays.length) {<br> TextView textView = new TextView(mContext);<br> textView.setText(textArrays[i]);<br> textView.setOnClickListener(marqueeTextViewClickListener);<br> LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);<br> viewFlipper.addView(textView, lp);<br> i++;<br> }<br> }<br> <br> public void releaseResources() {<br> if (marqueeTextView != null) {<br> if (viewFlipper != null) {<br> viewFlipper.stopFlipping();<br> viewFlipper.removeAllViews();<br> viewFlipper = null;<br> }<br> marqueeTextView = null;<br> }<br> }<br> <br>} |
然后,主Activity异常简单(还是封装得好):
1 | <br> <br> public class MainActivity extends AppCompatActivity {<br> private MarqueeTextView marqueeTv;<br> private String [] textArrays = new String[]{ "this is content No.1" , "this is content No.2" , "this is content No.3" };<br> <br> @Override<br> protected void onCreate(Bundle savedInstanceState) {<br> super.onCreate(savedInstanceState);<br> setContentView(R.layout.activity_main);<br> marqueeTv = (MarqueeTextView) findViewById(R.id.marqueeTv);<br> <br> marqueeTv.setTextArraysAndClickListener(textArrays, new MarqueeTextViewClickListener() {<br> @Override<br> public void onClick(View view) {<br> startActivity( new Intent(MainActivity.this,AnotherActivity. class ));<br> }<br> });<br> }<br> <br> @Override<br> protected void onDestroy() {<br> marqueeTv.releaseResources();<br> super.onDestroy();<br> }<br>} |
以上就是 直播app源码开源,Android 滚动的公告栏,更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2022-11-09 app直播源代码,scroll-view如何自适应页面剩余高度
2022-11-09 直播系统搭建,实现页面多级来回切换支持滑动和点击操作
2022-11-09 直播平台怎么搭建,Android与Js互调之传递图片
2021-11-09 一对一视频源码,登录时输入密码时的显示密码按钮
2021-11-09 小视频源码,java使用Thumbnails压缩图片
2021-11-09 app直播源码,软件登录时的背景图更改