界面

1.activity_main.xml

<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:id="@+id/news_title_layout">    <fragment        android:layout_width="match_parent"        android:layout_height="match_parent"        android:id="@+id/news_title_fragment"        android:name="com.example.ken.fragmentbestpractice.NewsTitleFragment"/>FrameLayout>

2.平板模式下的activity_main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:orientation="horizontal"    android:layout_width="match_parent"    android:layout_height="match_parent">    <fragment        android:layout_width="0dp"        android:layout_weight="1"        android:layout_height="match_parent"        android:name="com.example.ken.fragmentbestpractice.NewsTitleFragment"        android:id="@+id/news_title_fragment" />    <FrameLayout        android:layout_width="0dp"        android:layout_height="match_parent"        android:id="@+id/news_content_layout"        android:layout_weight="3">        <fragment            android:layout_width="match_parent"            android:layout_height="match_parent"            android:id="@+id/news_content_fragment"            android:name="com.example.ken.fragmentbestpractice.NewsContentFragment"/>    FrameLayout>LinearLayout>

3.news_item.xml

<?xml version="1.0" encoding="utf-8"?><TextView xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:id="@+id/news_title"    android:singleLine="true"    android:ellipsize="end"    android:textSize="18sp"    android:paddingLeft="10dp"    android:paddingRight="10dp"    android:paddingTop="15dp"    android:paddingBottom="15dp"    />

4.news_title_frag.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="match_parent"    android:layout_height="match_parent">    <android.support.v7.widget.RecyclerView        android:layout_width="match_parent"        android:layout_height="match_parent"        android:id="@+id/news_title_recycler_view"/>LinearLayout>

5.news_content.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="match_parent"    android:layout_height="match_parent">    <fragment        android:layout_width="match_parent"        android:layout_height="match_parent"        android:id="@+id/news_content_fragment"        android:name="com.example.ken.fragmentbestpractice.NewsContentFragment"/>LinearLayout>

6.news_content_frag.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">    <LinearLayout        android:layout_width="match_parent"        android:layout_height="match_parent"        android:id="@+id/visibility_layout"        android:orientation="vertical"        android:visibility="invisible">        <TextView            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:id="@+id/news_title"            android:gravity="center"            android:padding="10dp"            android:textSize="20sp"/>        <View            android:layout_width="match_parent"            android:layout_height="1dp"            android:background="#000" />        <TextView            android:layout_width="match_parent"            android:layout_height="0dp"            android:layout_weight="1"            android:id="@+id/news_content"            android:padding="15dp"            android:textSize="18sp"/>    LinearLayout>    <View        android:layout_width="1dp"        android:layout_height="match_parent"        android:layout_alignParentLeft="true"        android:background="#000" />RelativeLayout>

JAVA  

1.MainActivity.java

package com.example.ken.fragmentbestpractice;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }}

2.News.java

package com.example.ken.fragmentbestpractice;public class News {    private String title;    private String content;    public String getTitle() {        return title;    }    public String getContent() {        return content;    }    public void setTitle(String title){        this.title = title;    }    public void setContent(String content) {        this.content = content;    }}

3.NewsContentActivity.java

package com.example.ken.fragmentbestpractice;import android.content.Context;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;public class NewsContentActivity extends AppCompatActivity {    public static void actionStart(Context context, String newsTitle,String newsContent){        Intent intent = new Intent(context, NewsContentActivity.class);        intent.putExtra("news_title", newsTitle);        intent.putExtra("news_content", newsContent);        context.startActivity(intent);    }    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.news_content);        String newsTitle = getIntent().getStringExtra("news_title");        String newsContent = getIntent().getStringExtra("news_content");        NewsContentFragment newsContentFragment = (NewsContentFragment)                getSupportFragmentManager().findFragmentById(R.id.news_content_fragment);        newsContentFragment.refresh(newsTitle, newsContent);    }}

4.NewsContentFrag.java

package com.example.ken.fragmentbestpractice;import android.os.Bundle;import android.support.annotation.NonNull;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;public class NewsContentFragment extends Fragment {    private View view;    @Nullable    @Override    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        view = inflater.inflate(R.layout.news_content_frag, container, false);        return view;    }    public void refresh(String newsTitle, String newsContent){        View visibilityLayoyt = view.findViewById(R.id.visibility_layout);        visibilityLayoyt.setVisibility(View.VISIBLE);        TextView newsTitleText = (TextView) view.findViewById(R.id.news_title);        TextView newsContentText = (TextView) view.findViewById(R.id.news_content);        newsTitleText.setText(newsTitle);        newsContentText.setText(newsContent);    }}

5.NewsTitleFragment.java

package com.example.ken.fragmentbestpractice;import android.os.Bundle;import android.support.annotation.NonNull;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.LinearLayout;import android.widget.TextView;import java.util.ArrayList;import java.util.List;import java.util.Random;public class NewsTitleFragment extends Fragment {    private boolean isTwoPane;    @Nullable    @Override    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View view = inflater.inflate(R.layout.news_title_frag, container, false);        RecyclerView newsTitleRecyclerView = (RecyclerView) view.findViewById(R.id.news_title_recycler_view);        LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());        newsTitleRecyclerView.setLayoutManager(layoutManager);        NewsAdapter adapter = new NewsAdapter(getNews());        newsTitleRecyclerView.setAdapter(adapter);        return view;    }    private List getNews(){        List newsList = new ArrayList<>();        for (int i =0; i<=50; i++){            News news = new News();            news.setTitle("This is news title " + i);            news.setContent(getRandomLengthContent("This is news content" + i));            newsList.add(news);        }        return newsList;    }    private String getRandomLengthContent(String content){        Random random = new Random();        int length = random.nextInt(20) + 1;        StringBuilder builder = new StringBuilder();        for (int i = 0; i<=length;i++){            builder.append(content);        }        return builder.toString();    }    @Override    public void onActivityCreated(@Nullable Bundle savedInstanceState) {        super.onActivityCreated(savedInstanceState);        if (getActivity().findViewById(R.id.news_content_layout) != null){            isTwoPane = true;        }else{            isTwoPane = false;        }    }    class NewsAdapter extends RecyclerView.Adapter{        private List mNewsList;        class ViewHolder extends RecyclerView.ViewHolder{            TextView newsTitleText;            public ViewHolder(View view){                super(view);                newsTitleText = (TextView) view.findViewById(R.id.news_title);            }        }        public NewsAdapter(List newsList){            mNewsList = newsList;        }        @NonNull        @Override        public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {            View view = LayoutInflater.from(viewGroup.getContext())                    .inflate(R.layout.news_item, viewGroup,false);            final ViewHolder holder = new ViewHolder(view);            view.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View view) {                    News news = mNewsList.get(holder.getAdapterPosition());                    if(isTwoPane){                        NewsContentFragment newsContentFragment =                                (NewsContentFragment) getFragmentManager()                                .findFragmentById(R.id.news_content_fragment);                        newsContentFragment.refresh(news.getTitle(),news.getContent());                    }else{                        NewsContentActivity.actionStart(getActivity(), news.getTitle(), news.getContent());                    }                }            });            return holder;        }        @Override        public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {            News news = mNewsList.get(i);            viewHolder.newsTitleText.setText(news.getTitle());        }        @Override        public int getItemCount() {            return mNewsList.size();        }    }}

手机的实现效果是这样的:

转载于:https://www.cnblogs.com/KEN-zj/p/9286051.html

更多相关文章

  1. Android设置界面
  2. android之popupwindow显示文件列表
  3. Android滑动解锁控件
  4. 王学岗OKHttp下载图片
  5. activities切换动画
  6. android BottomSheetDialog新控件解析,实现知乎评论列表效果
  7. 实现IOS版的抽屉效果(点击,拖拽滑动)
  8. Android提高篇之自定义dialog实现processDialog“正在加载”效果
  9. 项目打包后出现第三方JAR包找不到

随机推荐

  1. Android图像处理技术(实现Android中的PS)(一
  2. Android点击WebView网页中的email发送邮
  3. Android 仿微信的键盘切换
  4. Android 视图动画(View Animation) 使用
  5. Android 应用的版本兼容 了解一下(理解 mi
  6. Android 使用WindowManager打造通用悬浮
  7. Android 不能使用内部资源
  8. Android [Camera 源码] 相机 HAL3(Camera
  9. Android系统进程Zygote启动过程的源代码
  10. android 通用的功能集锦