標籤:android 換膚
Android-系統換膚的幾種方法
一 使用Theme進行簡單的換膚
1,為不同的皮膚編寫不同的Theme,然後在manifest檔案的Activity中應用即可
<activity android:theme="@style/MyTheme"></activity>
2,在onCreate中動態設定setTheme
public class MainActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //設定主題 setTheme(R.style.AppTheme); setContentView(R.layout.layout_portrait); }}
二 改變介面的布局檔案來換膚
1,為不同的皮膚編寫不同的布局檔案
2,載入布局檔案
3,重新綁定介面控制項
下面是一個橫豎屏轉換的Demo:
主Activity類:
public class MainActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //初始化狀態的豎屏 setContentView(R.layout.layout_portrait); //由打出的log可以判斷系統利用onConfigurationChanged轉換的時候,不會重新onCreate,只是在第一次 //的時候onCreate log.i("chengzhi log", "onCreate"); } //利用onConfigurationChanged可以提高轉換的效率 @Override public void onConfigurationChanged(Configuration newConfig) { // TODO Auto-generated method stub super.onConfigurationChanged(newConfig); //系統狀態改變為垂直的時候 if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { //設定布局為豎屏 setContentView(R.layout.layout_portrait); } //系統狀態改變為水平的時候 else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { //設定布局為水平 setContentView(R.layout.layout_landscape); } //打出log,判斷是否正常運行 Log.i("chengzhi", "onConfigurationChanged"); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; }}
兩個布局檔案類:
1,水平布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > //四個按鈕 <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> <Button android:id="@+id/button4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /></LinearLayout>
如:
2,豎直布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > //下面是四個按鈕 <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /> <Button android:id="@+id/button4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" /></LinearLayout>
如:
manifest檔案註冊主Activity:
<activity android:name="com.example.androidconfigchange.MainActivity" android:label="@string/app_name" <!--設定configChanges屬性為orientation --> android:configChanges="orientation" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity><!--添加許可權 --> <uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/>
著作權聲明:歡迎交流指本文章的錯誤,必定虛心接,QQ872785786
Android-系統換膚的幾種方法