最近在研究一个类似屏保开锁的一个拖拉控件的activity,查网上的资料,在github找到一个很炫的,可是实在是不知道怎么用啊,所以就自己简单的做了一个,下面是源代码,很简单,视觉效果没那么好
这是MianActivity:
public class MainActivity extends Activity {
ImageView basketball;
ImageView circle;
TextView arowleft,arowright,player_login,coach_login;
boolean isLogin=false;
int x,y; //Imageview原来的位置
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);//全屏显示
setContentView(R.layout.activity_main);
basketball=(ImageView)findViewById(R.id.basketball);
arowleft=(TextView)findViewById(R.id.arowleft);
arowright=(TextView)findViewById(R.id.arowright);
circle=(ImageView)findViewById(R.id.circle);
player_login=(TextView)findViewById(R.id.player_login);
coach_login=(TextView)findViewById(R.id.coach_login);
basketball.setOnTouchListener(moveListener); //设置touch监听
}
private OnTouchListener moveListener=new OnTouchListener() {
int lastX,lastY;
@Override
public boolean onTouch(View v, MotionEvent e) {
// TODO Auto-generated method stub
switch (e.getAction())
{
case MotionEvent.ACTION_DOWN:
coach_login.setVisibility(View.VISIBLE);
player_login.setVisibility(View.VISIBLE);
circle.setVisibility(View.VISIBLE);
arowleft.setVisibility(View.VISIBLE);
arowright.setVisibility(View.VISIBLE);
lastX=(int)e.getRawX();
lastY=(int)e.getRawY();
x=(int)e.getRawX();
y=(int)e.getRawY();
basketball.setImageResource(R.drawable.basketball_light);
break;
case MotionEvent.ACTION_MOVE:
int distancX=(int)e.getRawX() - x; //计算离开原来位置的距离
int dx = (int) e.getRawX() - lastX;
int dy = (int) e.getRawY() - lastY;
int left = v.getLeft() + dx;
int top = v.getTop();
int right = v.getRight() + dx;
int bottom = v.getBottom();
if(distancX>150||!isLogin) //当移动到指定的位置就让对应的Textview变色
{
coach_login.setTextColor(Color.YELLOW);
arowright.setTextColor(Color.YELLOW);
isLogin=true;
}else if(isLogin||distancX<150||distancX>0){
coach_login.setTextColor(Color.WHITE);
arowright.setTextColor(Color.WHITE);
}
if(distancX<-150||!isLogin)
{
player_login.setTextColor(Color.YELLOW);
arowleft.setTextColor(Color.YELLOW);
isLogin=true;
}else if(distancX>-150||distancX<0)
{
player_login.setTextColor(Color.WHITE);
arowleft.setTextColor(Color.WHITE);
}
v.layout(left, top, right, bottom);//不断重新设置位置,达到移动的效果
lastX = (int) e.getRawX();
lastY = (int) e.getRawY();
break;
case MotionEvent.ACTION_UP:
coach_login.setVisibility(View.GONE); //将控件还原
player_login.setVisibility(View.GONE);
circle.setVisibility(View.GONE);
arowleft.setVisibility(View.GONE);
arowright.setVisibility(View.GONE);
basketball.setImageResource(R.drawable.basketball);
player_login.setTextColor(Color.WHITE);
arowleft.setTextColor(Color.WHITE);
coach_login.setTextColor(Color.WHITE);
arowright.setTextColor(Color.WHITE);
break;
}
return true;
}
};
}
这是布局文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/login"
android:orientation="vertical"
tools:context="com.guigu.yxp.guigubsktball.MainActivity" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:text="硅谷篮球训练营"
android:textColor="#BFBFBF"
android:textSize="30sp" />
<ImageView
android:visibility="gone"
android:id="@+id/circle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="50dp"
android:src="@drawable/circle" />
<TextView
android:visibility="gone"
android:id="@+id/player_login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="140dp"
android:layout_toLeftOf="@id/circle"
android:text="球员登陆"
android:textColor="#fff"
android:textSize="20sp" />
<TextView
android:visibility="gone"
android:id="@+id/coach_login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="140dp"
android:layout_toRightOf="@id/circle"
android:text="教练登陆"
android:textColor="#fff"
android:textSize="20sp" />
<TextView
android:visibility="gone"
android:id="@+id/arowleft"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/arowright"
android:layout_alignBottom="@+id/arowright"
android:layout_alignLeft="@+id/textView1"
android:text="@string/arowleft"
android:textColor="#fff"
android:textSize="20sp" />
<TextView
android:visibility="gone"
android:id="@+id/arowright"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="150dp"
android:layout_alignRight="@+id/textView1"
android:text="@string/arowright"
android:textColor="#fff"
android:textSize="20sp" />
<ImageView
android:id="@+id/basketball"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="135dp"
android:src="@drawable/basketball"
/>
</RelativeLayout>