編輯:關於Android編程
最近在研究一個類似屏保開鎖的一個拖拉控件的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;
}
};
}
Android 圖像處理(一) : Shader
?之前一段時間,我都在研究Android自定義View的相關知識,隨著逐漸的深入,漸漸了解到了一些Android圖像處理的知識,主要是Bitmap,Canvas,Shad
手把手帶你畫一個動態錯誤提示 Android自定義view
廢話不多說,看效果圖:首先 構造函數 測量... 這裡就一筆帶過了。 public ErrorView(Context context) { this(co
Android自定義彩色織帶分割線
前言最近開發的一個產品需要涉及到訂單,訂單頁涉及到了一個UI元素,類似餓了麼的訂單頁以及支付寶口碑外賣訂單頁的彩帶(通俗點講就是一條兩種顏色相間而成的分割線): 
Android okhttp3 DNS 底層實現追蹤(一)
需求:Android 4.4 + okhttp 3.2;非root,在應用層,拿到DNS維度底層數據方案:jni + hook libc.so中DNS關鍵getaddri