Android中横竖屏的切换
2015-10-22 19:56
429 查看
对于Android中横竖屏的切换,当从竖屏切换到横屏时,竖屏的Activity会销毁,会加载横屏时的Activity。下面的实例就是我们在
切换横竖屏时让页面加载不同的布局内容。
在res文件夹下新建文件夹:layout-land,这里面的布局文件是我们把手机切换到横屏时加载到Activity中的内容。
这里我们先写一下竖屏时加载的内容:
activity-main.xml文件:
二、上面这些是竖屏时加载的布局,下面我们把屏幕切换到横屏,然后当前的Activity会被销毁,会加载我们layout-land文件夹
中的布局。
layout-land文件夹中的xml文件:
下面我们创建两个Fragment的子类:
LeftFragment:
下面是运行结果:
切换横竖屏时让页面加载不同的布局内容。
在res文件夹下新建文件夹:layout-land,这里面的布局文件是我们把手机切换到横屏时加载到Activity中的内容。
这里我们先写一下竖屏时加载的内容:
activity-main.xml文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:id="@+id/layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:padding="10dp" > <TextView android:id="@+id/tvTou" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:clickable="true" android:gravity="center" android:text="头条" /> <TextView android:id="@+id/tvKe" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:clickable="true" android:gravity="center" android:text="科技" /> <TextView android:id="@+id/tvTi" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:clickable="true" android:gravity="center" android:text="体育" /> </LinearLayout> <fragment android:id="@+id/fragment" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@id/layout" class="com.example.text01.BottomFragment" /> </RelativeLayout>接下来是MainActivity:
package com.example.text01; import android.os.Bundle; import android.app.Activity; import android.content.res.Configuration; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.TextView; /** * 点击TextView将TextView的文本值--》传递到Fragment * * @author Administrator * */ public class MainActivity extends Activity implements OnClickListener { private BottomFragment fragment; private TextView tvTT, tvKJ, tvTY; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 当我们切换到横屏时,就会自动加载layout-land文件夹下的布局 setContentView(R.layout.activity_main); initData(); } /** * 初始化监听 */ private void initListener() { tvTT.setOnClickListener(this); tvKJ.setOnClickListener(this); tvTY.setOnClickListener(this); } /** * 初始化数据 */ private void initData() { // 判断屏幕方向,横屏时加载的布局文件 if (isScrennLand()) { tvTT = (TextView) findViewById(R.id.tvTou); tvKJ = (TextView) findViewById(R.id.tvKe); tvTY = (TextView) findViewById(R.id.tvTi); // 用我们布局文件中的fragment给我们创建的Fragment的子类实例化 fragment = (BottomFragment) getFragmentManager().findFragmentById( R.id.fragment); initListener(); } } /** * 判断屏幕方向 * * @return */ private boolean isScrennLand() { // 横屏 if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) { return true; } return false; } /** * 设置TextView的监听事件 */ @Override public void onClick(View v) { String content = ""; switch (v.getId()) { case R.id.tvTou: content = tvTT.getText().toString(); break; case R.id.tvKe: content = tvKJ.getText().toString(); break; case R.id.tvTi: content = tvTY.getText().toString(); break; default: break; } fragment.getContent(content); } }然后是我们创建的Fragment的子类:
package com.example.text01; import java.util.ArrayList; import java.util.List; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.BaseAdapter; import android.widget.ListView; public class BottomFragment extends Fragment { private ListView lv; private List<String> lists = new ArrayList<String>(); private ArrayAdapter<String> adapter; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment, null); lv = (ListView) view.findViewById(R.id.lv); initData("头条"); adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, lists); lv.setAdapter(adapter); return view; } // 初始化数据 public void initData(String data) { // 用来填充数据 for (int i = 0; i < 20; i++) { lists.add(data + " " + i); } } public void getContent(String content) { lists.clear(); initData(content); // 刷新适配器 adapter.notifyDataSetChanged(); } }下面是运行结果:
二、上面这些是竖屏时加载的布局,下面我们把屏幕切换到横屏,然后当前的Activity会被销毁,会加载我们layout-land文件夹
中的布局。
layout-land文件夹中的xml文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <fragment android:id="@+id/left_fragment" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" class="com.example.text01.LeftFragment" /> <fragment android:id="@+id/right_fragment" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="3" class="com.example.text01.RightFragment" /> </LinearLayout>MainActivity和之前的一样。
下面我们创建两个Fragment的子类:
LeftFragment:
package com.example.text01; import java.util.ArrayList; import java.util.List; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.ListView; public class LeftFragment extends Fragment { private String[] titles; private ListView lv; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.left, null); titles = getResources().getStringArray(R.array.title);//引用我们定义的数组资源 ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, titles); lv = (ListView) view.findViewById(R.id.lv_left); lv.setAdapter(adapter); //设置ListView的监听 lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // 得到右边的ListView ListView rightListView = (ListView) getActivity().findViewById( R.id.lv_right); String content = titles[position]; List<String> lists = new ArrayList<String>(); for (int i = 0; i < 15; i++) { lists.add(content + " " + i); } ArrayAdapter<String> adapter = new ArrayAdapter<String>( getActivity(), android.R.layout.simple_list_item_1, lists); rightListView.setAdapter(adapter); } }); return view; } }RightFragment:
package com.example.text01; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class RightFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.right, null); return view; } }它们两个的布局文件都是两个ListView,就不写了
下面是运行结果:
相关文章推荐
- android键盘表情流畅切换实现
- 关于Android Studio导入.9图片报错问题
- android路上的点点滴滴
- AndroidL的checkPermission方法详解
- android拍照后图片路径的获取(解决不同手机存在拍照后旋转的问题)
- Android关于String数据的startsWith()和endsWith()函数操作
- Android 操作系统的内存回收机制
- Android CollapsingToolbarLayout:将ActionBar载入Toolbar(2)
- Android 关于@NonNull
- Android逆向之旅---SO(ELF)文件格式详解
- Android 颜色透明度计算
- Android的handler详解
- ANDROID仿淘宝商品浏览滑(拖)动查看详情界面
- Device Compatibility
- Android基础入门教程——8.3.3 Paint API之—— MaskFilter(面具)
- Android Studio下多渠道打包
- Android Studio下多渠道打包
- android屏幕适配
- Xamarin.Android之绑定库集合
- android应用无法连接到bmob云端解决方案