當前位置:首頁 » 安卓系統 » androidxml旋轉

androidxml旋轉

發布時間: 2023-07-23 18:25:01

A. android開發中如何旋轉布局

樓主你好,這個可以通過動畫來達到這個效果的,代碼如下:
只要把您的layout對象傳進去就行了
public void showAnimation(View mView)
{
final float centerX = mView.getWidth() / 2.0f;
final float centerY = mView.getHeight() / 2.0f;
//這個是設置需要旋轉的角度,我設置的是180度
RotateAnimation rotateAnimation = new RotateAnimation(0, 180, centerX,
centerY);
//這個是設置通話時間的
rotateAnimation.setDuration(1000*3);
rotateAnimation.setFillAfter(true);
mView.startAnimation(rotateAnimation);
}

B. android製作一個可以旋轉textview怎麼實現

android製作一個可以旋轉textview需要用到補間動畫,然後用textview調用該補間動畫。在andorid studio中實現步驟如下。

1、首先在一個layout布局中創建一個textView控制項,並定義id。代碼如下:

<?xmlversion="1.0"encoding="utf-8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<TextView
android:id="@+id/tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>

2、然後創建anim文件,在然後文件中創建一個xml文件,文件中為tv_rotate。文件內容如下。

運行之後textView就可以旋轉了。

C. Android 旋轉動畫怎麼動態設置旋轉角度,用什麼方法,不想在xml文件里寫死,怎麼做

你好:
RotateAnimation rotateAnimation = new RotateAnimation(0, 180, centerX, centerY);
其中第一個參數表示動畫的起始角度,第二個參數表示動畫的結束角度
謝謝,望採納。

D. 如何在 Android 程序中禁止屏幕旋轉和重啟Activity

第一種方法:在清單文件的那個Activity標簽中添加:android:screenOrientation="portrait"
第二種:在activity的onCreate中加入這些:
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
一般在全項目都需要加的時候,只需要寫個Activity的基類,讓其他的都繼承這個類,然後設置第二種就可以了,不用每個都寫

E. 安卓手機怎樣換為橫屏

方法一:在AndroidManifest.xml中配置

假設不想讓軟體在橫豎屏之間切換,最簡單的辦法就是在項目的AndroidManifest.xml中找到你所指定的activity中加上android:screenOrientation屬性。他有下面幾個參數:

"unspecified":默認值 由系統來推斷顯示方向.判定的策略是和設備相關的,所以不同的設備會有不同的顯示方向.
"landscape":橫屏顯示(寬比高要長)
"portrait":豎屏顯示(高比寬要長)
"user":用戶當前首選的方向
"behind":和該Activity以下的那個Activity的方向一致(在Activity堆棧中的)
"sensor":有物理的感應器來決定。假設用戶旋轉設備這屏幕會橫豎屏切換。
"nosensor":忽略物理感應器。這樣就不會隨著用戶旋轉設備而更改了("unspecified"設置除外)。

方法二:在java代碼中設置

設置橫屏代碼:setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//橫屏

設置豎屏代碼:setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//豎屏

由於橫屏有兩個方向的橫法,而這個設置橫屏的語句,假設不是默認的橫屏方向,會把已經橫屏的屏幕旋轉180°。

所以能夠先推斷是否已經為橫屏了。假設不是再旋轉,不會讓用戶認為轉的莫名其妙啦!代碼例如以下:
if(this.getResources().getConfiguration().orientation ==Configuration.ORIENTATION_PORTRAIT){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}

三:

1.直接新建兩個布局文件,剩下的就什麼也不用管了:右鍵單擊『res』文件夾 -> 'new' -> 'Android resource directory'; 將 Directory name 填寫 layout-land,Resource type 選擇layout,這是建立了一個橫屏的布局文

F. android 屏幕旋轉生命周期和setRequestedOrientation強制旋轉

屏幕會根據當前感測器進行自動旋轉,旋轉之後,activity屏幕的 生命周期不會發生變化 ,在activity中只會回調onConfigurationChanged方法

可見每次旋轉onDestory()方法都會被調用,如果要保存一些activity被銷毀前的數據的可以在onSaveInstanceState()方法中通過Bundle去保存

當我們調用了:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
或者
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
之後屏幕不會再自動旋轉回來的情況

關於這點:我在b站App端也發現相關問題,點進b站的播放視頻界面,我們手機開啟屏幕自動旋轉,當我們橫豎屏旋轉的時候是可以正常橫豎屏切換的,但是我們點擊視頻右下角的放大(就是橫屏)之後,自動旋轉就失效了,要豎屏的話需要再點擊一次

關於這個問題,就是我們說的setRequestedOrientation之後重力感測失效的問題,處理的方法也很簡單
在AndroidManifest.xml中設置了android:configChanges="orientation|keyboardHidden|screenSize的基礎上,在onConfigurationChanged中調用 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR) 方法,使其恢復重力感測即可

G. android 不是activity怎麼監測屏幕旋轉

Camera相關的程序,被屏幕旋轉搞得頭大,一方面得考慮屏幕旋轉後布局的變化,另一方面得搞清楚屏幕的旋轉方向、角度與Camera的Preview角度的關系。本來通過重載Activity的onConfigurationChanged方法,可以檢測到屏幕旋轉,但發現有一個問題,它只能檢測水平方向與垂直方向的切換,無法檢測180度的跳轉(例如:水平方向突然轉180度到水平方向),所以最後不得不換成OrientationEventListener方法來解決問題。在這里分享下經驗,並就此順便總結下Android開發中屏幕旋轉的處理吧。

1. 不做任何處理的情況下

如果沒有針對性地做任何處理的話,默認情況下,當用戶手機的重力感應器打開後,旋轉屏幕方向,會導致app的當前activity發生onDestroy-> onCreate,會重新構造當前activity和界面布局,很多橫屏/豎屏的布局如果沒有很好的設計的話,轉換為豎屏/橫屏後,會顯示地很難看。

如果想很好地支持屏幕旋轉,則建議在res中建立layout-land和layout-port兩個文件夾,把橫屏和豎屏的布局文件放入對應的layout文件夾中。

2. 如何設置固定的屏幕方向

在AndroidManifest.xml對應的 activity 屬性中,添加:

android:screenOrientation="landscape" //橫屏
android:screenOrientation="portrait" //豎屏

那麼,默認的情況下,應用啟動後,會固定為指定的屏幕方向,即使屏幕旋轉,Activity也不會出現銷毀或者轉向等任何反應。

3. 強制開啟屏幕旋轉效果

如果用戶的手機沒有開啟重力感應器或者在AndroidManifest.xml中設置了android:screenOrientation,默認情況下,該Activity不會響應屏幕旋轉事件。如果在這種情況下,依然希望Activity能響應屏幕旋轉,則添加如下代碼:

// activity的 onCreate 函數中
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR);

4. 屏幕旋轉時,不希望activity被銷毀

如果希望捕獲屏幕旋轉事件,並且不希望activity 被銷毀,方法如下:

(1)在AndroidManifest.xml對應的activity屬性中,添加:

android:configChanges="orientation|screenSize"

(2)在對應的activity中,重載函數onConfigurationChanged

@Override
public voidonConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}

在該函數中可以通過兩種方法檢測當前的屏幕狀態:

第一種:

判斷newConfig是否等於Configuration.ORIENTATION_LANDSCAPE,Configuration.ORIENTATION_PORTRAIT

當然,這種方法只能判斷屏幕是否為橫屏,或者豎屏,不能獲取具體的旋轉角度。

第二種:

調用this.getWindowManager().getDefaultDisplay().getRotation();

該函數的返回值,有如下四種:

Surface.ROTATION_0,Surface.ROTATION_90,Surface.ROTATION_180,Surface.ROTATION_270

其中,Surface.ROTATION_0 表示的是手機豎屏方向向上,後面幾個以此為基準依次以順時針90度遞增。

(3) 這種方法的Bug

最近發現這種方法有一個Bug,它只能一次旋轉90度,如果你突然一下子旋轉180度,onConfigurationChanged函數不會被調用。

H. 如何讓安卓手機判定屏幕旋轉90度 how to make android mobile phone to determine

在介紹之前,我們需要先了解默認情況下android屏幕旋轉的機制:
默認情況下,當用戶手機的重力感應器打開後,旋轉屏幕方向,會導致當前activity發生onDestroy-> onCreate,這樣會重新構造當前activity和界面布局,如果在Camera界面,則表現為卡頓或者黑屏一段時間。如果是在橫豎屏UI設計方面,那麼想很好地支持屏幕旋轉,則建議在res中建立layout-land和layout-port兩個文件夾,把橫屏和豎屏的布局文件分別放入對應的layout文件夾中。
了解了這些以後,我們對android的屏幕旋轉方法進行如下總結:
1. AndroidManifest.xml設置
如果單單想設置橫屏或者豎屏,那麼只需要添加橫豎屏代碼:
android:screenOrientation="landscape"橫屏設置;
android:screenOrientation="portrait"豎屏設置;

這種方法的優點:即使屏幕旋轉,Activity也不會重新onCreate。
缺點:屏幕只有一個方向。
2. 代碼動態設置
如果你需要動態改變橫豎屏設置,那麼,只需要在代碼中調用setRequestedOrientation()函數:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
//橫屏設置
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
//豎屏設置
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
//默認設置

這種方法優點:可以隨意動態設置,滿足我們人為改變橫豎屏的要求,同時滿足橫豎屏UI不同的設計需求;
缺點:如果改變設置,那麼,Activity會被銷毀,重新構建,即重新onCreate;
3. 重寫onConfigurationChanged
如果你不希望旋轉屏幕的時候Activity被不斷的onCreate(這種情況往往會造成屏幕切換時的卡頓),那麼,可以使用此方法:
首先,在AndroidMainfest.xml中添加configChanges:
<activity android:name=".Test"
android:configChanges="orientation|keyboard">
</activity>

注意,keyboardHidden表示鍵盤輔助功能隱藏,如果你的開發API等級等於或高於13,還需要設置screenSize,因為screenSize會在屏幕旋轉時改變;
android:configChanges="keyboardHidden|orientation|screenSize"

然後,在Activity中重寫onConfigurationChanged方法,這個方法將會在屏幕旋轉變化時,進行監聽處理:
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stubsuper.onConfigurationChanged(newConfig);
if (newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){
// Nothing need to be done here
} else {
// Nothing need to be done here
}
}

這個方法的優點:我們可以隨時監聽屏幕旋轉變化,並對應做出相應的操作;
缺點:它只能一次旋轉90度,如果一下子旋轉180度,onConfigurationChanged函數不會被調用。
4. 結合OrientationEventListener,自定義旋轉監聽設置
如果你想更加完美,更加完全的掌控監聽屏幕旋轉變化,比如,轉屏時不想重新onCreate,尤其是在Camera界面,不想出現旋轉preview時屏幕的卡頓、黑屏等問題,那麼,可以嘗試:

首先,創建OrientationEventListener對象:
private OrientationEventListener mOrientationListener;
// screen orientation listener
private boolean mScreenProtrait = true;
private boolean mCurrentOrient = false;

然後,自定義屏幕變化回調介面
abstract protected void OrientationChanged(int orientation);
//screen orientation change event

最後,自定義監聽類
private final void () {
mOrientationListener = new OrientationEventListener(this) {
@Override
public void onOrientationChanged(int rotation) {
if (((rotation >= 0) && (rotation <= 45)) || (rotation >= 315)||((rotation>=135)&&(rotation<=225))) {//portrait
mCurrentOrient = true;
if(mCurrentOrient!=mScreenProtrait)
{
mScreenProtrait = mCurrentOrient;
OrientationChanged(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Log.d(TAG, "Screen orientation changed from Landscape to Portrait!");
}
}
else if (((rotation > 45) && (rotation < 135))||((rotation>225)&&(rotation<315))) {//landscape
mCurrentOrient = false;
if(mCurrentOrient!=mScreenProtrait)
{
mScreenProtrait = mCurrentOrient;
OrientationChanged(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Log.d(TAG, "Screen orientation changed from Portrait to Landscape!");
}
}
}
};
mOrientationListener.enable();
}

在onCreate()中調用:
();

這個方法的優點:你可以任意隨時准確的監聽屏幕旋轉變化的狀態,可以隨時動態改變橫豎屏狀態;
註:對於Camera來說,你可以設置初始化為橫屏或者豎屏,然後對外提供旋轉監聽,這樣,既可以獲得屏幕旋轉狀態,讓你做出相應的操作,又不會出現重新onCreate當前Activity造成的卡頓與短暫的黑屏切換。

熱點內容
sql語句on 發布:2025-02-05 07:41:42 瀏覽:596
取消電腦密碼怎麼設置8 發布:2025-02-05 07:24:16 瀏覽:393
洗腦編程 發布:2025-02-05 07:23:52 瀏覽:948
osd加密 發布:2025-02-05 07:17:39 瀏覽:36
微信游戲源碼下載 發布:2025-02-05 07:17:29 瀏覽:384
計算機內存儲器是 發布:2025-02-05 07:13:35 瀏覽:144
classpathlinux 發布:2025-02-05 07:12:57 瀏覽:564
linuxftp連接失敗 發布:2025-02-05 07:01:40 瀏覽:705
學生信息管理系統java 發布:2025-02-05 06:58:45 瀏覽:576
刺客信條4解壓後 發布:2025-02-05 06:55:23 瀏覽:901