編輯:關於Android編程
先上圖看效果
實質上說是動畫有點不妥,確切的說應該是手勢的處理,廢話不多說看代碼<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+U2ltcGxlRHJhZ1NhbXBsZS5qYXZhPGJyPgo8L3A+CjxwPjwvcD4KPHByZSBjbGFzcz0="brush:java;">public class SimpleDragSample extends Activity { protected int contentTop; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.layout_simpledrag) ; DisplayMetrics dm = getResources().getDisplayMetrics() ; final int screenWidth = dm.widthPixels ; final int screenHeight = dm.heightPixels ; Log.e("width,height", screenWidth + "," + screenHeight); final Button _Button = (Button)findViewById(R.id.buttonDrag) ; _Button.setOnTouchListener(new OnTouchListener() { int lastX , lastY ; boolean isDraging = false ; @Override public boolean onTouch(View v, MotionEvent event) { int ea = event.getAction() ; switch (ea) { case MotionEvent.ACTION_DOWN: isDraging = true ; lastX = (int) event.getRawX() ; lastY = (int) event.getRawY() ; if(contentTop == 0) { contentTop = getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop();//獲取狀態欄和標題欄的總高度 } break; case MotionEvent.ACTION_MOVE: if(isDraging) { int dx = (int)event.getRawX() - lastX ; int dy = (int)event.getRawY() - lastY ; int l = v.getLeft() + dx ; int b = v.getBottom() + dy ; int r = v.getRight() + dx ; int t = v.getTop() + dy ; //判斷超出屏幕 if(l<0) { l = 0 ; r = v.getWidth() ; } if(t<0) { t = 0 ; b = v.getHeight() ; } if(r>screenWidth) { r = screenWidth ; l = r - v.getWidth() ; } if(b>screenHeight - contentTop) { b = screenHeight - contentTop ; t = b - v.getHeight() ; } v.layout(l, t, r, b) ; lastX = (int) event.getRawX() ; lastY = (int) event.getRawY() ; v.postInvalidate() ; } break ; case MotionEvent.ACTION_UP: isDraging = false ; break ; default: break; } return false; } }) ; } }layout_simpledrag.xml
1.view.getLeft、view.getRight、view.getTop、view.getBottom都是相對父view的位置,這裡button的父view為我們定義的RelativeLayout,是不包括頂部狀態欄和標題欄的。
這篇文章講解的很詳細
http://blog.csdn.net/androiddevelop/article/details/8373782
2.用以下代碼測試我的小米手機(480*854),獲取的值為320*569
DisplayMetrics dm = getResources().getDisplayMetrics() ; final int screenWidth = dm.widthPixels ; final int screenHeight = dm.heightPixels ;
解決辦法:
注: density
不等於1的情況下,需要設置targetSdkVersion在4-9之間,例如
研究之後發現,若沒有設定多分辨率支持的話,Android系統會將240x320的低密度(120)和800x480以上的的高密度尺寸轉換為中等密度(160)對應的尺寸
3.三種方式獲取屏幕分辨率
(1)直接 int screenWidth = getWindowManager().getDefaultDisplay().getWidth(); int screenHeight = getWindowManager().getDefaultDisplay().getHeight(); (2)通過getResources()獲取DisplayMetrics對象, DisplayMetrics dm = new DisplayMetrics(); dm = getResources().getDisplayMetrics(); screenWidth = dm.widthPixels; screenHeight = dm.heightPixels; (3)通過getWindowManager()獲取 dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); screenWidth = dm.widthPixels; screenHeight = dm.heightPixels;
獲取正在運行的程序並把它加入到一個listview的adapter類面,方法如下: // 正在運行的 public List getRunningProcess()
原文地址:http://android.xsoftlab.net/training/notify-user/display-progress.html通知中包含了一個進度
下拉刷新對於一個app來說是必不可少的一個功能,在早期大多數使用的是chrisbanes的PullToRefresh,或是修改自該框架的其他庫。而到現在已經有了更多的選擇
之前寫過一個二維碼掃描demo,用的Zxing的框架,點擊下載,後續掃描二維碼中出現一些問題,比如解決壓縮圖片,調整掃描窗口大小等等。後續單位要求做掃描登錄實現,發現難點