當前位置:首頁 » 安卓系統 » android屏幕監聽

android屏幕監聽

發布時間: 2022-05-16 04:09:31

A. android如何實現屏幕指定區域監聽手勢劃動事件

有個小技巧,就是用linearLayout.左邊一個,右邊一個。分別監聽兩個linearLayout即使左右監聽。而且不用擔心左邊偏移等問題。希望能幫到你。

B. 如何監聽android的屏幕滑動停止事件

android的屏幕滑動停止事件監聽方法為:
1、自定義一個ScrollView,內容只要將標準的ScrollView 拷貝出來,然後就可以利用Scroller的兩個屬性去判斷是否滾動完畢:
public final boolean isFinished() {
return mFinished;
}
public final int getDuration() {
return mDuration;
}
2、啟動線程來獲得當前的scrollview的高度,並實時更新就可以了,一旦高度不再發生變化則判斷為停止。

C. 如何通過GestureDetector實現屏幕事件監聽

內容如題:
1.SlideExample.java文件
package com.example;
import android.app.Activity;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.ViewGroup;
public class SlideExample extends Activity {
public ViewGroup container1, container2;
private GestureDetector gestureDetector;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 監聽屏幕動作事件
SampleGuest gestureListener = new SampleGuest(this);
gestureDetector = new GestureDetector(gestureListener);
container1 = (ViewGroup) findViewById(R.id.container1);
container2 = (ViewGroup) findViewById(R.id.container2);
}
// called automatically, any screen action will Triggered it
public boolean onTouchEvent(MotionEvent event) {
if (gestureDetector.onTouchEvent(event))
return true;
else
return false;
}
}
2.SampleGuest.java文件
package com.example;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.GestureDetector.OnGestureListener;
import android.view.animation.AnimationUtils;
public class SampleGuest implements OnGestureListener {
SlideExample se;
private static final int SWIPE_MAX_OFF_PATH = 100;
private static final int SWIPE_MIN_DISTANCE = 100;
private static final int SWIPE_THRESHOLD_VELOCITY = 100;
public SampleGuest(SlideExample se) {
this.se = se;
}
// 用戶輕觸觸摸屏,由1個MotionEvent ACTION_DOWN觸發
public boolean onDown(MotionEvent e) {
Log.d("TAG", "[onDown]");
return true;
}
// 用戶按下觸摸屏、快速移動後松開,由1個MotionEvent ACTION_DOWN,
// 多個ACTION_MOVE, 1個ACTION_UP觸發
// e1:第1個ACTION_DOWN MotionEvent
// e2:最後一個ACTION_MOVE MotionEvent
// velocityX:X軸上的移動速度,像素/秒
// velocityY:Y軸上的移動速度,像素/秒
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
return false;
if ((e1.getX() - e2.getX()) > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
se.container1.setAnimation(AnimationUtils.loadAnimation(se,
R.anim.push_left_out));
se.container2.setVisibility(View.VISIBLE);
se.container2.setAnimation(AnimationUtils.loadAnimation(se,
R.anim.push_right_in));
se.container1.setVisibility(View.GONE);
} else if ((e2.getX() - e1.getX()) > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
se.container1.setVisibility(View.VISIBLE);
se.container1.setAnimation(AnimationUtils.loadAnimation(se,
R.anim.push_left_in));
se.container2.setAnimation(AnimationUtils.loadAnimation(se,
R.anim.push_right_out));
se.container2.setVisibility(View.GONE);
}
return true;
}
// 用戶長按觸摸屏,由多個MotionEvent ACTION_DOWN觸發
public void onLongPress(MotionEvent e) {
Log.d("TAG", "[onLongPress]");
}
// 用戶按下觸摸屏,並拖動,由1個MotionEvent ACTION_DOWN, 多個ACTION_MOVE觸發
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
Log.d("TAG", "[onScroll]");
return true;
}
// 用戶輕觸觸摸屏,尚未松開或拖動,由一個1個MotionEvent ACTION_DOWN觸發
// 注意和onDown()的區別,強調的是沒有松開或者拖動的狀態
public void onShowPress(MotionEvent e) {
Log.d("TAG", "[onShowPress]");
}
// 用戶(輕觸觸摸屏後)松開,由一個1個MotionEvent ACTION_UP觸發
public boolean onSingleTapUp(MotionEvent e) {
Log.d("TAG", "[onSingleTapUp]");
return true;
}
}
3.main.xml文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:id="@+id/container">
<RelativeLayout android:layout_width="fill_parent"
android:id="@+id/container1" android:layout_height="fill_parent"
android:visibility="visible">
<ImageView android:layout_width="fill_parent"
android:layout_height="fill_parent" android:background="@drawable/one" />
</RelativeLayout>
<RelativeLayout android:layout_width="fill_parent"
android:background="@drawable/gray" android:id="@+id/container2"
android:visibility="gone" android:layout_height="fill_parent">
<ImageView android:layout_width="fill_parent"
android:layout_height="fill_parent" android:background="@drawable/three" />
</RelativeLayout>
</RelativeLayout>
4.程序所用到的anim中的幾個xml文件內容
push_left_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android=">
<translate android:fromXDelta="-100%p"
android:toXDelta="0"
android:ration="1000"/>
<alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:ration="100" />
</set>
push_left_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android=">
<translate android:fromXDelta="0" android:toXDelta="-100%p"
android:ration="1000" />
<alpha android:fromAlpha="1.0" android:toAlpha="1.0"
android:ration="400" />
</set>
push_right_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android=">
<translate android:fromXDelta="100%p"
android:toXDelta="0"
android:ration="1000"/>
<alpha android:fromAlpha="1.0" android:toAlpha="1.0" android:ration="400" />
</set>
push_right_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android=">
<translate android:fromXDelta="0"
android:toXDelta="100%p"
android:ration="1000"/>
<alpha android:fromAlpha="1.0" android:toAlpha="1.0" android:ration="400" />
</set>
6.至於程序中所用到的圖片,大家可以自己找幾張,修改名稱即可

D. android代碼,怎麼監控到屏幕亮度的變化

android的屏幕亮度變化時不會發送廣播,而是通過Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, value);設置的,其中的參數value是0-255之間的整型值,如果想獲取到當前屏幕的亮度的話,可以通過int currentValue=Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS);當然獲取到的值也是0-255之間的數,如果你想獲取到屏幕亮度的變化可以在Settings.System.putInt()方法中找到Settings.System.SCREEN_BRIGHTNESS_MODE對應的設置語句,然後發送一個廣播出去。

E. 在android中怎樣給整個頁面設置監聽事件

您可以類似這樣,先實例化子頁面中的Button控制項,然後將實例化後的控制項綁定監聽事件 View view=LayoutInflater.from(context).inflate(R.layout.abc_action_bar_view_list_nav_layout,null); Button button= (Button) view.findViewById(R.id.action_bar); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //寫上點擊後要執行的事件 } }); 當然了,您要在不同頁面實現不同的功能的話,您可以將以上代碼寫在viewPager.setOnPageChangeListener的滾動回調方法當中進行頁面滾動的判斷,從而執行不同的點擊事件。希望能幫到您,如果還有什麼問題,歡迎您繼續追問。謝謝。

F. android 怎樣監聽屏幕是否被觸碰過

在第一個程序中注冊一個廣播接收器.BroadcastReceiver,指定接受的事件為A.
然後在第二個程序中捕獲OnTouch事件,點擊屏幕時,發送指定的廣播A,android的廣播系統所有程序都可以收到.
這樣就實現了你想要的功能.
以上回答你滿意么?

G. android怎麼監聽手指抬起屏幕的事件

一般情況下,你在MotionEvent.ACTION_UP或者MotionEvent.ACTION_POINTER_UP等UP事件的回調中處理即可,因為手指在屏幕上如果按著即使不動的情況下,其實Action_move仍在回調,就是用戶比較難模擬出來那種完全手指按著屏幕一個像素點也沒有動的情況。
或者你不想在UP事件中處理,那麼就在Move中檢測單位事件內移動的具體,比如100ms內如果用戶手指移動距離小於你自己定義的閥值的話,可以認為用戶沒有移動手指。
寫了半天才發現你問的不是這個問題。
你的問題可以通過先計算你將要滑動屏幕到的最終位置,然後通過判斷你現在已經滑動到的位置,如果兩個位置間的距離小於某個閥值比如一像素的話,那麼就可以看做屏幕滑動停止了。

可以參考一下launcher中對屏幕滑動結束的處理邏輯。

H. android中怎麼實現按鍵監聽和觸屏監聽

按鍵監聽代碼:

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

// TODO Auto-generated method stub

switch(keyCode){

case KeyEvent.KEYCODE_DPAD_UP:

y--;break;

case KeyEvent.KEYCODE_DPAD_LEFT:

x--;break;

case KeyEvent.KEYCODE_DPAD_DOWN:

y++;break;

case KeyEvent.KEYCODE_DPAD_RIGHT:

x++;break;

}

this.invalidate();

return true;

}

觸屏監聽代碼:

@Override

public boolean onTouchEvent(MotionEvent event) {

// TODO Auto-generated method stub

x=(int)event.getX();

y=(int)event.getY();

this.invalidate();

return true;

}

通過滑鼠可以使圖形任意移動。將apk文件下載到手機上就可以實現觸屏監聽。

I. android 如何監聽屏幕當前是否全屏

可以在屏幕的Activity加監聽屏幕屬性改變,發生改變則檢查當前是否全屏狀態。
是全屏狀態發送,全屏的廣播消息,到監聽應用觸發操作。
@Override
public void onWindowAttributesChanged(LayoutParams params) {
// TODO Auto-generated method stub
super.onWindowAttributesChanged(params);
Log.e(TAG,"onWindowAttributesChanged()"+getWindow().getAttributes().flags);
if (WindowManager.LayoutParams.FLAG_FULLSCREEN == getWindow().getAttributes().flags) {
Log.e(TAG,"onWindowAttributesChanged() FLAG_FULLSCREEN");
}
}
(注意該判斷在屏幕切換橫豎屏是也會觸發,需要根據實際情況過濾橫豎屏切換的情況。)

J. android 監聽屏幕是否被觸碰過

在第一個程序中注冊一個廣播接收器.BroadcastReceiver,指定接受的事件為A.
然後在第二個程序中捕獲OnTouch事件,點擊屏幕時,發送指定的廣播A,android的廣播系統所有程序都可以收到.
這樣就實現了你想要的功能.

熱點內容
解壓到當前文件夾右鍵 發布:2024-04-26 03:57:08 瀏覽:979
html5android教程視頻下載 發布:2024-04-26 03:09:59 瀏覽:867
伺服器的描述是什麼 發布:2024-04-26 03:08:32 瀏覽:394
個人加密 發布:2024-04-26 03:01:23 瀏覽:520
linuxusbgadget 發布:2024-04-26 02:52:54 瀏覽:304
我的世界空島世界伺服器地址 發布:2024-04-26 01:39:08 瀏覽:248
尼爾機械紀元加密 發布:2024-04-26 01:37:11 瀏覽:867
在控制台輸出sql語句 發布:2024-04-26 01:08:12 瀏覽:432
動畫java 發布:2024-04-26 01:02:40 瀏覽:12
得力文件夾5302 發布:2024-04-26 00:21:32 瀏覽:91