ViewPager与小圆点的联动效果

2024-03-03 22:32

本文主要是介绍ViewPager与小圆点的联动效果,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

创建圆点

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"><solid android:color="#800000"/><corners android:radius="8dp"/></shape>

//创建布局

activtity_main.xml(相对布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/activity_main"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="com.example.shenxuesong.rikao0913.MainActivity"><android.support.v4.view.ViewPagerandroid:layout_width="match_parent"android:layout_height="300dp"android:id="@+id/vp"android:layout_alignParentTop="true"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/tv"android:layout_marginTop="280dp"android:layout_marginLeft="20dp"android:textColor="#22f"/><LinearLayoutandroid:layout_width="wrap_content"android:layout_height="40dp"android:id="@+id/ll"android:orientation="horizontal"android:layout_marginRight="-10dp"android:layout_marginTop="240dp"android:gravity="center"></LinearLayout>
</RelativeLayout>

或者用线性布局



<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><android.support.v4.view.ViewPagerandroid:layout_width="wrap_content"android:layout_height="200dp"android:id="@+id/vp"android:layout_marginTop="10dp"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/tv"android:layout_marginTop="-40dp"android:layout_marginLeft="20dp"android:textColor="#22f"/><LinearLayoutandroid:layout_width="match_parent"android:layout_height="40dp"android:gravity="center"android:id="@+id/ll"android:orientation="horizontal"android:layout_marginTop="-35dp"></LinearLayout><!-- <me.maxwin.view.XListViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginTop="80dp"android:id="@+id/xlv"></me.maxwin.view.XListView>--></LinearLayout>


item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="match_parent"android:layout_height="match_parent">
<Viewandroid:layout_width="8dp"android:layout_height="8dp"android:layout_margin="10dp"android:id="@+id/view"android:background="@drawable/shape1"/>
</LinearLayout>


//universal_Imager_Loader 请求网络图片

 

public class MyApplicationextendsApplication { 

@Override

    public void onCreate() {super.onCreate();ImageLoaderConfiguration config=new ImageLoaderConfiguration.Builder(this).build();ImageLoader.getInstance().init(config);}
}

//AndroidMianfest.xml中配置权限

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.shenxuesong.rikao0913">
<uses-permission android:name="android.permission.INTERNET"/>
<application
    android:allowBackup="true"
    android:name=".MyApplication"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/Theme.AppCompat.Light"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>
</application></manifest>




//具体的方法操作

import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;import com.google.gson.Gson;
import com.nostra13.universalimageloader.core.ImageLoader;import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;public class MainActivity extends AppCompatActivity {private static final String surl="https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=6&page=1";private List<JavaBean.NewslistBean> newslist;private List<View> dolist=new ArrayList<View>();private List<String> str=new ArrayList<String>();private List<ImageView> imagelist=new ArrayList<ImageView>();private ViewPager vp;private LinearLayout ll;private int current=0;private int old_list=0;private TextView tv;private Handler h=new Handler(){@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);if(msg.what==1){int i=msg.arg1;//设置viewpager的位置vp.setCurrentItem(i);// 设置图片的标题tv.setText(str.get(i%imagelist.size()));//设置圆点与图片的联动dolist.get(old_list).setBackgroundResource(R.drawable.shape1);dolist.get(i%imagelist.size()).setBackgroundResource(R.drawable.shape2);old_list=i%imagelist.size();}}};protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//查找IDvp=(ViewPager)findViewById(R.id.vp);ll=(LinearLayout)findViewById(R.id.ll);tv=(TextView)findViewById(R.id.tv);//获取图片的路径及biatigetPricUrLandTitle();}private void getPricUrLandTitle() {//异步任务new AsyncTask<String,Integer,String>(){@Overrideprotected String doInBackground(String... strings) {String str="";try {URL url = new URL(surl);HttpURLConnection http=(HttpURLConnection) url.openConnection();int code = http.getResponseCode();if(code==200){InputStream in = http.getInputStream();byte[] b=new byte[1024];int len=0;while((len=in.read(b))!=-1){str+=new String(b,0,len);}}} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return str;}@Overrideprotected void onPostExecute(String s) {super.onPostExecute(s);Gson gson = new Gson();newslist = gson.fromJson(s, JavaBean.class).getNewslist();for (int i=0;i<newslist.size();i++){JavaBean.NewslistBean newslistBean = newslist.get(i);String picUrl = newslistBean.getPicUrl();String title = newslistBean.getTitle();Log.i("TAG",picUrl);//获取网络请求的图片数据,并把它添加到imagelist中getImageView(picUrl);//得到圆点getYuanDian();//标题str.add(title);}//执行的方法init();}}.execute();}private void getImageView(String picUrl) {ImageView imageView = new ImageView(MainActivity.this);imageView.setScaleType(ImageView.ScaleType.FIT_XY);ImageLoader.getInstance().displayImage(picUrl,imageView);imagelist.add(imageView);}private void getYuanDian() {View view = LayoutInflater.from(this).inflate(R.layout.item, null);View imageview = view.findViewById(R.id.view);//不懂dolist.add(imageview);ll.addView(view);}private void init() {//设置适配器vp.setAdapter(new PagerAdapter() {@Overridepublic int getCount() {return Integer.MAX_VALUE;}@Overridepublic boolean isViewFromObject(View view, Object object) {return view==object;}@Overridepublic Object instantiateItem(ViewGroup container, int position) {View imageView = imagelist.get(position % imagelist.size());container.addView(imageView);return imageView;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeView((View) object);}});//设置圆点的第一个被选中dolist.get(0).setBackgroundResource(R.drawable.shape2);//设置viewpager的当前位置vp.setCurrentItem(50000000);//启动定时器Timer timer = new Timer();timer.schedule(new TimerTask() {@Overridepublic void run() {current=vp.getCurrentItem()+1;Message msg = Message.obtain();msg.arg1=current;msg.what=1;h.sendMessage(msg);}}, 3000, 2000);}}





这篇关于ViewPager与小圆点的联动效果的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/771124

相关文章

防近视护眼台灯什么牌子好?五款防近视效果好的护眼台灯推荐

在家里,灯具是属于离不开的家具,每个大大小小的地方都需要的照亮,所以一盏好灯是必不可少的,每个发挥着作用。而护眼台灯就起了一个保护眼睛,预防近视的作用。可以保护我们在学习,阅读的时候提供一个合适的光线环境,保护我们的眼睛。防近视护眼台灯什么牌子好?那我们怎么选择一个优秀的护眼台灯也是很重要,才能起到最大的护眼效果。下面五款防近视效果好的护眼台灯推荐: 一:六个推荐防近视效果好的护眼台灯的

ViewPager+fragment实现切换页面(一)

如今的很多应用中都是下面有一排按钮,点击可以切换页面,滑动也可以切换页面。下面就来简单的实现这个功能。 思路 首先肯定是会用到viewpager这个控件,为了能够向下兼容,最好用v4包下的viewpager,Activity要继承FragmentActivity 其次用一个集合来存储所有的fragment页面在设置viewpager的适配器时,把存储fragment页面的list集合传入ada

【Godot4.3】多边形的斜线填充效果基础实现

概述 图案(Pattern)填充是一个非常常见的效果。其中又以斜线填充最为简单。本篇就探讨在Godot4.3中如何使用Geometry2D和CanvasItem的绘图函数实现斜线填充效果。 基础思路 Geometry2D类提供了多边形和多边形以及多边形与折线的布尔运算。按照自然的思路,多边形的斜线填充应该属于“多边形与折线的布尔运算”范畴。 第一个问题是如何获得斜线,这条斜线应该满足什么样

UniApp实现漂亮的音乐歌词滚动播放效果

在现代的音乐播放应用中,歌词的展示和滚动播放已经成为了一个非常常见的功能。今天,我们将通过UniApp来实现一个漂亮的歌词滚动播放功能。我们将使用UniApp提供的组件和API来完成这个任务。 页面结构 在页面的模板部分,我们需要创建一个音频播放器和歌词展示区域。使用<scroll-view>组件来实现歌词的滚动效果。 <template><view class="audio-co

Nuxt3入门:过渡效果(第5节)

你好同学,我是沐爸,欢迎点赞、收藏、评论和关注。 Nuxt 利用 Vue 的 <Transition> 组件在页面和布局之间应用过渡效果。 一、页面过渡效果 你可以启用页面过渡效果,以便对所有页面应用自动过渡效果。 nuxt.config.js export default defineNuxtConfig({app: {pageTransition: {name: 'fade',mode

安卓中的fragment与viewPager的使用问题的解决

最近使用viewPager,结合fragment使用,发现fragment的周期将不符合他的原有的周期流程,多个fragment将会产生错位问题。       通过研究相关代码,发现fragment的切换实际调用的函数为setUserVisibleHint,通过在其中重写方法,将会达到fragment正确切换的效果。       public void setUserVisible

Differential Diffusion,赋予每个像素它应有的力量,以及在comfyui中的测试效果

🥽原论文要点 首先是原论文地址:https://differential-diffusion.github.io/paper.pdf 其次是git介绍地址:GitHub - exx8/differential-diffusion 感兴趣的朋友们可以自行阅读。 首先,论文开篇就给了一个例子: 我们的方法根据给定的图片和文本提示,以不同的程度改变图像的不同区域。这种可控性允许我们再现

【Unity小技巧】URP管线遮挡高亮效果

前言 在URP渲染管线环境下实现物体遮挡高亮显示效果,效果如下: Unity URP遮挡高亮 实现步骤 创建层级,为需要显示高亮效果的物体添加层级,比如Player 创建一个材质球,也就是高亮效果显示的材质球找到Universal Renderer Data Assets 4.在Assets上添加两个Render Objects组件 第一个做如下三处设置 指定遮挡层级指

海鲜加工污水处理设备处理效果高

诸城市鑫淼环保小编带大家了解一下海鲜加工污水处理设备处理效果高   海鲜加工污水处理设备通常采用物理、化学和生物处理相结合的方法,对废水中的污染物进行高xiao去除。设备设计紧凑,占地面积小,操作简便,适用于不同规模的海鲜加工厂。   设备特点   高xiao性:采用先进的处理工艺和技术,确保废水处理效果稳定可靠。   占地面积小:设备设计紧凑,占地面积小,适合在有限的空间内安装。