动态添加小圆点 与 给imageView设置触摸的监听事件
2017-10-13 16:25
525 查看
/**
* 动态添加小圆点 <根据网络获取的图片数量,动态 灵活添加圆点数量>
* @param list
*/
//shape.xml 文件的配置
//红色圆点
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#ff0000"/>
<corners android:radius="10dp"/>
<size android:height="10dp" android:width="10dp"/>
</shape>
//绿色圆点
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#00ff00"/>
<corners android:radius="10dp"/>
<size android:height="10dp" android:width="10dp"/>
</shape>
//java代码的逻辑处理
private void initDoc(List<DataDataBean.DataBean> list) {
//1.需要一个集合记录一下小圆点的imageView控件
images = new ArrayList<ImageView>();
//2...linearLayout上面的视图清空一下再去添加
linearLayout.removeAllViews();
for (int i=0;i<list.size();i++){
ImageView imageView = new ImageView(MainActivity.this);
if (i==0){
imageView.setImageResource(R.drawable.shape_01);
}else {
imageView.setImageResource(R.drawable.shape_02);
}
//添加到集合去
images.add(imageView);
//添加到线性布局上
//这是布局参数,,刚开始小圆点之间没有距离,所以使用java代码指定宽度高度,并且指定小圆点之间的距离
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(5,0,5,0);
linearLayout.addView(imageView,params);
}
}
//viewPage设置监听事件
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
/**
* 当选中某个页面的时候,把当前的小圆点背景变成绿色
* @param position
*/
@Override
public void onPageSelected(int position) {
for (int i=0;i<images.size();i++){
if (i == position%images.size()){
images.get(i).setImageResource(R.drawable.shape_01);
}else {
images.get(i).setImageResource(R.drawable.shape_02);
}
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
/**
*在适配器中为imageview设置触摸的监听事件
*/
//给imageView设置触摸的监听事件
imageView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
int action = motionEvent.getAction();//获取手指的动作
switch (action){
case MotionEvent.ACTION_DOWN://按下的动作...应该取消发送消息的操作
handler.removeCallbacksAndMessages(null);
break;
case MotionEvent.ACTION_MOVE://移动的动作
handler.removeCallbacksAndMessages(null);
break;
case MotionEvent.ACTION_CANCEL://取消
//重新发送
handler.sendEmptyMessageDelayed(0,2000);
break;
case MotionEvent.ACTION_UP://抬起的动作
handler.sendEmptyMessageDelayed(0,2000);
break;
}
//返回true表示自己处理触摸事件
return true;
}
});
* 动态添加小圆点 <根据网络获取的图片数量,动态 灵活添加圆点数量>
* @param list
*/
//shape.xml 文件的配置
//红色圆点
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#ff0000"/>
<corners android:radius="10dp"/>
<size android:height="10dp" android:width="10dp"/>
</shape>
//绿色圆点
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#00ff00"/>
<corners android:radius="10dp"/>
<size android:height="10dp" android:width="10dp"/>
</shape>
//java代码的逻辑处理
private void initDoc(List<DataDataBean.DataBean> list) {
//1.需要一个集合记录一下小圆点的imageView控件
images = new ArrayList<ImageView>();
//2...linearLayout上面的视图清空一下再去添加
linearLayout.removeAllViews();
for (int i=0;i<list.size();i++){
ImageView imageView = new ImageView(MainActivity.this);
if (i==0){
imageView.setImageResource(R.drawable.shape_01);
}else {
imageView.setImageResource(R.drawable.shape_02);
}
//添加到集合去
images.add(imageView);
//添加到线性布局上
//这是布局参数,,刚开始小圆点之间没有距离,所以使用java代码指定宽度高度,并且指定小圆点之间的距离
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(5,0,5,0);
linearLayout.addView(imageView,params);
}
}
//viewPage设置监听事件
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
/**
* 当选中某个页面的时候,把当前的小圆点背景变成绿色
* @param position
*/
@Override
public void onPageSelected(int position) {
for (int i=0;i<images.size();i++){
if (i == position%images.size()){
images.get(i).setImageResource(R.drawable.shape_01);
}else {
images.get(i).setImageResource(R.drawable.shape_02);
}
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
/**
*在适配器中为imageview设置触摸的监听事件
*/
//给imageView设置触摸的监听事件
imageView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
int action = motionEvent.getAction();//获取手指的动作
switch (action){
case MotionEvent.ACTION_DOWN://按下的动作...应该取消发送消息的操作
handler.removeCallbacksAndMessages(null);
break;
case MotionEvent.ACTION_MOVE://移动的动作
handler.removeCallbacksAndMessages(null);
break;
case MotionEvent.ACTION_CANCEL://取消
//重新发送
handler.sendEmptyMessageDelayed(0,2000);
break;
case MotionEvent.ACTION_UP://抬起的动作
handler.sendEmptyMessageDelayed(0,2000);
break;
}
//返回true表示自己处理触摸事件
return true;
}
});
相关文章推荐
- HorizontalScrollView动态添加子view,并且设置每个子view的点击事件
- 动态添加的元素,设置监听事件;input:text事件只触发一次
- 动态添加ImageView 设置setPadding不起作用问题
- android 动态添加ImageView 设置setPadding不起作用问
- Android实战简易教程<四>(ScrollView和HorizontalScrollView动态添加控件并提供事件监听)
- Android实战简易教程-第四枪(ScrollView和HorizontalScrollView动态添加控件并提供事件监听)
- 动态添加ImageView 设置setPadding不起作用问题
- 动态添加ImageView 设置setPadding不起作用问题
- 动态添加ImageView 设置setPadding不起作用问题
- 动态添加未知个View,并动态设置点击事件
- Android 仿钉钉组织架构功能,动态创建多个按钮,并给每个按键添加监听事件
- android 为TextView的部分文字设置超链接样式并监听点击事件
- 自定义TextView设置边框与背景颜色添加点击事件,点击更改随机数与背景
- 动态设置ImageView中的图片
- 对android里布局文件当中的TextView对象设置事件监听,但是不响应问题解决
- RecycleView添加头部、点击事件的监听
- Android:一个TextView分段改变样式、添加监听事件的实现方式(类似朋友圈评论)
- 动态添加script、link标签设置回调事件
- Android开发学习笔记:为动态添加的EditText控件绑定值改变监听事件