功能:在竖屏状态下显示文件名,点击进入另外一个activity 中,显示对应的文件内容,在横屏条件下(需要新建一个layout-land文件,下面写横屏条件下的布局,名称activity_main.xml和layout下的布局文件名称一样,系统会自动根据横竖屏情况寻找对应的布局),左侧文件名,右侧文件内容
承接上一博文:
两个Activity
MainActivity.java:
package com.example.zjday12_fragmen_land;
import android.os.Bundle;
import android.app.Activity;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
ContentActivity.java:
package com.example.zjday12_fragmen_land;
import com.example.zjday12_fragmen_land.fragment.Content_Fragment;
import android.app.Activity;
import android.os.Bundle;
public class ContentActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_content);
//修改Activity的标题
setTitle("内容页面");
/**
* 动态加载fragment
*/
//实例化fragment
Content_Fragment fragment =new Content_Fragment();
//获取参数
fragment.setArguments(getIntent().getExtras());
//动态显示
getFragmentManager().beginTransaction()
.replace(R.id.content_id, fragment)
.commit();
}
}
两个Fragment
Content_Fragment.java:
package com.example.zjday12_fragmen_land.fragment;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import android.app.Fragment;
import android.content.res.AssetManager;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.example.zjday12_fragmen_land.R;
public class Content_Fragment extends Fragment {
private TextView tv;//显示文件的控件
// private String contentText;//文件的内容
private String fileName;//文件的名称
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view =inflater.inflate(R.layout.fragment_content, null);
tv=(TextView) view.findViewById(R.id.textview);
//接收传来的文件名称
fileName =getArguments().getString("fileName");
// Toast.makeText(getActivity(), fileName, 1).show();
//根据传来的文件获取文件内容
//获取assets管理器
AssetManager manager =getResources().getAssets();
try {
InputStream inStream=manager.open(fileName);
StringBuilder sBuilder =new StringBuilder();
String line=null;
BufferedReader reader=new BufferedReader(new InputStreamReader(inStream));
while((line=reader.readLine())!=null){
//line=reader.readLine()将reader中的数据写入line中
sBuilder.append(line);
sBuilder.append("\n");
}
tv.setText(sBuilder.toString());
} catch (IOException e) {
e.printStackTrace();
}
return view;
}
}
Left_Fragment.java:
package com.example.zjday12_fragmen_land.fragment;
import java.util.ArrayList;
import java.util.List;
import android.app.Fragment;
import android.content.Intent;
import android.content.res.Configuration;
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;
import com.example.zjday12_fragmen_land.ContentActivity;
import com.example.zjday12_fragmen_land.R;
public class Left_Fragment extends Fragment {
private ListView listview;
private ArrayAdapter<String>adapter;
//对象必须new一下,防止空指针异常
private List<String>data=new ArrayList<String>();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view =inflater.inflate(R.layout.fragment_left, null);
//获取控件
listview=(ListView) view.findViewById(R.id.listview);
//数据源
data.add("day02.txt");
data.add("day03.txt");
data.add("day04.txt");
data.add("day05.txt");
data.add("day06.txt");
data.add("day07.txt");
//适配器
adapter=new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, data);
//设置适配器
listview.setAdapter(adapter);
//监听事件
listview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
//获取文件名称
String fileName=data.get(position);
// adapter.getItem(position)
/**
* 将获得的文件名通过bundle传出,
* 因为如果是横屏的话只能通过bundle在两个Fragment之间穿值
* 所以此处直接用bundle进行传值
*/
Bundle args =new Bundle();
args.putString("fileName", fileName);
/**
* 判断当前屏幕的方向
* getResources().getConfiguration()获取配置信息
* 如果为横屏,则按照layout-land中的布局进行排列
* 若为竖屏,则跳转到另一个Activity中
*/
if(getResources().getConfiguration().orientation==Configuration.ORIENTATION_LANDSCAPE){
//传入数据
Content_Fragment fragment=new Content_Fragment();
fragment.setArguments(args);
getFragmentManager().beginTransaction()
.replace(R.id.content_fragment_id, fragment)
.addToBackStack(null)
.commit();
}else{
Intent intent =new Intent(getActivity(),ContentActivity.class);
intent.putExtras(args);
startActivity(intent);
}
}
});
return view;
}
}
四个布局文件
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"
android:padding="5dp">
<fragment
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/fragment_left"
android:name="com.example.zjday12_fragmen_land.fragment.Left_Fragment"/>
</RelativeLayout>
activity_content.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/content_id"/>
fragment_content.xml:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/textview"
android:textColor="#00ff00"
android:textSize="20sp"/>
</ScrollView>
fragment_left.xml:
<?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" >
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/listview"
android:divider="#00ff00"
android:dividerHeight="2dp"/>
</LinearLayout>
横屏条件下的布局文件:
activity_main.xml:
<?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"
android:padding="5dp" >
<fragment
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:id="@+id/left_fragment_id"
android:name="com.example.zjday12_fragmen_land.fragment.Left_Fragment"/>
<FrameLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:id="@+id/content_fragment_id"
android:layout_weight="3"
/>
</LinearLayout>