直播软件搭建,横版自动滑动的轮播图
直播软件搭建,横版自动滑动的轮播图实现的相关代码
布局文件很简单,就一个viewpager,不过需要设置android:clipChildren为false,以便能显示出两边的view,两边各留了60dp。
1 | <br><?xml version= "1.0" encoding= "utf-8" ?><br><LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android" <br> android:layout_width= "match_parent" <br> android:layout_height= "match_parent" <br> android:gravity= "center" <br> android:background= "#ffffff" <br> android:clipChildren= "false" <br> android:orientation= "vertical" ><br> <android.support.v4.view.ViewPager<br> android:id= "@+id/viewpager" <br> android:layout_marginLeft= "60dp" <br> android:layout_marginRight= "60dp" <br> android:clipChildren= "false" <br> android:layout_width= "match_parent" <br> android:layout_height= "match_parent" /><br></LinearLayout> |
再来看下具体的代码实现:
1 | public class MainActivity extends Activity {<br> private ViewPager viewPager;<br> private int[] imgs = new int[]{R.mipmap.ic_launcher,R.mipmap.ic_launcher,<br> R.mipmap.ic_launcher,R.mipmap.ic_launcher,R.mipmap.ic_launcher};<br> @Override<br> protected void onCreate(Bundle savedInstanceState) {<br> super.onCreate(savedInstanceState);<br> setContentView(R.layout.activity_main);<br> viewPager = (ViewPager) findViewById(R.id.viewpager);<br> viewPager.setOffscreenPageLimit(3);<br> viewPager.setAdapter( new PagerAdapter() {<br> @Override<br> public int getCount() {<br> return imgs.length;<br> }<br> @Override<br> public boolean isViewFromObject(View view, Object object) {<br> return view == object;<br> }<br> @Override<br> public Object instantiateItem(ViewGroup container, int position) {<br> ImageView imageView = new ImageView(MainActivity.this);<br> imageView.setImageResource(imgs[position]);<br> container.addView(imageView);<br> return imageView;<br> }<br> @Override<br> public void destroyItem(ViewGroup container, int position, Object object) {<br> container.removeView((View) object);<br> }<br> });<br> viewPager.setPageTransformer(true, new ViewPagerTrans());<br> }<br> class ViewPagerTrans implements ViewPager.PageTransformer{<br> private float MIN_ALPHA = 0.5f; //渐变<br> private float MIN_SCALE = 0.8f;//缩放<br> @Override<br> public void transformPage(View page, float position) {<br>// float alpha = (1 - Math.abs(position)) * MIN_ALPHA + MIN_ALPHA;<br>// float leftScale = MIN_SCALE + (1 - MIN_SCALE) * (1 - Math.abs(position));<br> if(position < -1){//左侧划出屏幕部分<br> page.setAlpha(MIN_ALPHA);<br> page.setScaleX(MIN_SCALE);<br> page.setScaleY(MIN_SCALE);<br> } else if(position <=1){<br> if(position <= 0){//滑动过程中左半部分 [-1~0]<br> float leftAlpha = (1 + position) * MIN_ALPHA + MIN_ALPHA;<br> page.setAlpha(leftAlpha);<br> float leftScale = MIN_SCALE + (1 - MIN_SCALE) * (1 - Math.abs(position));<br> page.setScaleX(leftScale);<br> page.setScaleY(leftScale);<br> } else {//滑动过程中又半部分 [0~1]<br> float rightAlpha = (1 - position) * MIN_ALPHA + MIN_ALPHA;<br> page.setAlpha(rightAlpha);<br> float rightScale = MIN_SCALE + (1 - MIN_SCALE) * (1 - Math.abs(position));<br> page.setScaleX(rightScale);<br> page.setScaleY(rightScale);<br> }<br> } else {//右侧超出屏幕部分<br> page.setAlpha(MIN_ALPHA);<br> page.setScaleX(MIN_SCALE);<br> page.setScaleY(MIN_SCALE);<br> }<br> }<br> }<br>} |
以上就是直播软件搭建,横版自动滑动的轮播图实现的相关代码, 更多内容欢迎关注之后的文章
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现