package com.example.welcome;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;
public class MainActivity extends Activity {
private ViewPager mViewPager;
MyAdapter mAdapter;
private ArrayList imageViewList;
View red_point;
private int lastDis;
PagerCursor pagerCursor;
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pagerCursor = (PagerCursor) findViewById(R.id.pagerCursor);
red_point = findViewById(R.id.red_point);
imageViewList = new ArrayList();
int[] imagesInt = {R.drawable.p1,R.drawable.p2,R.drawable.p3};
for (int i = 0; i < imagesInt.length; i++) {
ImageView imageView = new ImageView(MainActivity.this);
imageView.setBackgroundResource(imagesInt[i]);
imageViewList.add(imageView);
}
mViewPager = (ViewPager) findViewById(R.id.mViewPager);
mAdapter = new MyAdapter();
mViewPager.setAdapter(mAdapter);
mViewPager.setOnPageChangeListener(new OnPageChangeListener() {
private boolean isDragging;
@Override
public void onPageSelected(int arg0) {
}
@Override
public void onPageScrolled(int position,float screenOffSet,int arg2) {
TranslateAnimation animation = null;
if (isDragging) {
int dp2px = PhoneUtils.dp2px(MainActivity.this,20f);
int offSet = (int) (position*dp2px + dp2px*screenOffSet);
animation = new TranslateAnimation(lastDis,offSet,0f,0f);
animation.setDuration(200);
animation.setFillAfter(true);
red_point.startAnimation(animation);
lastDis = offSet;
}
float[] screenSize = MeasureUtil.getScreenSize(MainActivity.this);
float itemWidth = screenSize[0]/3;
pagerCursor.SetOffSet(position,screenOffSet,itemWidth);
}
@Override
public void onPageScrollStateChanged(int arg0) {
switch (arg0) {
case ViewPager.SCROLL_STATE_DRAGGING://滑动
isDragging = true;
break;
case ViewPager.SCROLL_STATE_IDLE://空闲
isDragging = false;
break;
default:
break;
}
}
});
}
class MyAdapter extends PagerAdapter{
@Override
public int getCount() {
return imageViewList.size();
}
@Override
public boolean isViewFromObject(View arg0,Object arg1) {
return arg0 == arg1;
}
@Override
public void destroyItem(ViewGroup container,int position,Object object) {
container.removeView(imageViewList.get(position));
}
@Override
public Object instantiateItem(ViewGroup container,int position) {
container.addView(imageViewList.get(position));
return imageViewList.get(position);
}
}
}
@H_403_12@
CustomeDotGroup
package com.example.welcome;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
public class CustomeDotGroup extends LinearLayout {
private Context context;
public CustomeDotGroup(Context context,AttributeSet attrs,int defStyle) {
super(context,attrs,defStyle);
this.context = context;
initRes();
}
public CustomeDotGroup(Context context,AttributeSet attrs) {
this(context,0);
}
public CustomeDotGroup(Context context) {
this(context,null);
}
private void initRes() {
int dotWidthOrHeight = PhoneUtils.dp2px(context,10);
for (int i = 0; i < 3; i++) {
ImageView dotImageView = new ImageView(context);
dotImageView.setBackgroundResource(R.drawable.point_normal);
LayoutParams dotImageViewParams = new LayoutParams(dotWidthOrHeight,dotWidthOrHeight);
if (i != 0) {
dotImageViewParams.leftMargin = dotWidthOrHeight;
}
dotImageView.setLayoutParams(dotImageViewParams);
this.addView(dotImageView);
}
}
}
@H_403_12@
PagerCursor
package com.example.welcome;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
public class PagerCursor extends View {
Context context;
private Paint mPaint;
private int screenWidth;
private int desRight;
private float itemWidth;
public PagerCursor(Context context,defStyle);
// TODO Auto-generated constructor stub
}
public PagerCursor(Context context,AttributeSet attrs) {
super(context,attrs);
this.context = context;
initRes();
// TODO Auto-generated constructor stub
}
public PagerCursor(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
private void initRes() {
float[] screenSize = MeasureUtil.getScreenSize((Activity) context);
screenWidth = (int) screenSize[0];
Log.d("TAG",",screenWidth" + screenWidth);
mPaint = new Paint();
mPaint.setColor(getResources().getColor(R.color.contentPressColor));
mPaint.setStyle(Paint.Style.FILL);
mPaint.setAntiAlias(true);
}
public void SetOffSet(int position,float itemWidth) {
int offSet = (int) (position * itemWidth + itemWidth * screenOffSet);
this.itemWidth = itemWidth;
desRight = offSet;
Log.d("TAG","screenOffSet:" + screenOffSet + ",position" + position
+ ",desRigh-->t" + desRight + ",itemWidth" + itemWidth);
invalidate();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Log.d("TAG","onDraw,itemWidth" + itemWidth);
canvas.drawRect(desRight,desRight + itemWidth,PhoneUtils.dp2px(context,5),mPaint);
}
}
@H_403_12@
MeasureUtil
package com.example.welcome;
import android.app.Activity;
import android.util.DisplayMetrics;
/**
* 测绘工具�?
*/
public final class MeasureUtil {
/**
* 获取屏幕尺寸
*
* @param activity
* Activity
* @return 屏幕尺寸像素值,下标�?的�?为宽,下标为1的�?为高
*/
public static float[] getScreenSize(Activity activity) {
DisplayMetrics metrics = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
return new float[] { metrics.widthPixels,metrics.heightPixels };
}
}
@H_403_12@
PhoneUtils
package com.example.welcome;
import android.content.Context;
public class PhoneUtils {
public static int dp2px(Context context,float dpValue){
float scale = context.getResources().getDisplayMetrics().density;
return (int)(dpValue * scale +0.5f);
}
}
@H_403_12@
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
小编个人微信号 jb51ccc
喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
相关文章
猜你在找的Android相关文章
在ExpandableListView中添加button后item项不能点击,获取不到点击事件。
原因:button按钮抢占了ExpandableListView的焦点
1 AlertDialog.Builder builder=new AlertDialog.Builder(this); 2 builder.setTitle("历史记录").se
现在是2021-03-12 00::39 刚刚完成了一个小软件部分功能,现在把出现的问题总结如下: 一、首先要下载jar包 网址:https://mvnrepository.com/artifact/
2021-03-06 13:26:12.274 8544-8544/com.example.helloworld E/AndroidRuntime: FATAL EXCEPTION: main Pro
首先要使用ListView是要自定义一个适配器类的,先简单分析一下适配器怎么写: 示例程序是要使用ListView列表显示出水果的图片以及对应的水果文字描述(水果名字)。 public class F
问题① 我在另外一个项目里写了一个注册和登录功能的几个文件,当我想把这些代码和另一个文件合起来的时候就出现了问题。 首先不可以直接把另外一个项目的某个文件直接复制过来, 最好的办法是重新新建一个相同名
ListView是Android中最常用的控件之一,几乎所有的应用程序都会用到它,因此学会运用它很重要。下面我们从一个例子中去理解ListView的用法,先看一下我们这个例子的项目结构图 这里我们先看
1.垂直滚动:Scroll 新建一个应用程序: 在MainActivity的布局文件上做个实验,现在设置了按钮1和按钮2后还剩下一些空位: 再设置一个按钮3让他超出屏幕之外: 现在去运行程序,是滑动不