use compact portrait vertical headlines layout for small screen
devices
This commit is contained in:
parent
adfa14f606
commit
6b2025bb58
95
res/layout-port/headlines_row_small.xml
Normal file
95
res/layout-port/headlines_row_small.xml
Normal file
@ -0,0 +1,95 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/headlines_row"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?headlineNormalBackground"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal" >
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?headlineSeparatorNormal"
|
||||
android:paddingRight="4dip" >
|
||||
</ImageView>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/linearLayout1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical"
|
||||
android:padding="3dip" >
|
||||
|
||||
<TextView
|
||||
android:id="@+id/title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:ellipsize="end"
|
||||
android:singleLine="true"
|
||||
android:text="There are many variations of passages of Lorem Ipsum available"
|
||||
android:textSize="16sp" >
|
||||
</TextView>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/linerLayout3"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal" >
|
||||
|
||||
<TextView
|
||||
android:id="@+id/excerpt"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit..."
|
||||
android:textColor="#909090"
|
||||
android:textSize="13sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/linearLayout4"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal" >
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/selected"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0"
|
||||
android:focusable="false" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/date"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="Jan 01, 00:00"
|
||||
android:textColor="#909090"
|
||||
android:textSize="13sp" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/marked"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0"
|
||||
android:clickable="true"
|
||||
android:src="@android:drawable/star_off" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/published"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0"
|
||||
android:clickable="true"
|
||||
android:src="@drawable/ic_rss_bw" >
|
||||
</ImageView>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
95
res/layout-port/headlines_row_small_selected.xml
Normal file
95
res/layout-port/headlines_row_small_selected.xml
Normal file
@ -0,0 +1,95 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/headlines_row"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?headlineSelectedBackground"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal" >
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?headlineSeparatorSelected"
|
||||
android:paddingRight="4dip" >
|
||||
</ImageView>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/linearLayout1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical"
|
||||
android:padding="3dip" >
|
||||
|
||||
<TextView
|
||||
android:id="@+id/title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:ellipsize="end"
|
||||
android:singleLine="true"
|
||||
android:text="There are many variations of passages of Lorem Ipsum available"
|
||||
android:textSize="16sp" >
|
||||
</TextView>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/linerLayout3"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal" >
|
||||
|
||||
<TextView
|
||||
android:id="@+id/excerpt"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit..."
|
||||
android:textColor="#909090"
|
||||
android:textSize="13sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/linearLayout4"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal" >
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/selected"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0"
|
||||
android:focusable="false" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/date"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="Jan 01, 00:00"
|
||||
android:textColor="#909090"
|
||||
android:textSize="13sp" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/marked"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0"
|
||||
android:clickable="true"
|
||||
android:src="@android:drawable/star_off" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/published"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0"
|
||||
android:clickable="true"
|
||||
android:src="@drawable/ic_rss_bw" >
|
||||
</ImageView>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
95
res/layout-port/headlines_row_small_unread.xml
Normal file
95
res/layout-port/headlines_row_small_unread.xml
Normal file
@ -0,0 +1,95 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/headlines_row"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?headlineUnreadBackground"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal" >
|
||||
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?headlineSeparatorUnread"
|
||||
android:paddingRight="4dip" >
|
||||
</ImageView>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/linearLayout1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:orientation="vertical"
|
||||
android:padding="3dip" >
|
||||
|
||||
<TextView
|
||||
android:id="@+id/title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:ellipsize="end"
|
||||
android:singleLine="true"
|
||||
android:text="There are many variations of passages of Lorem Ipsum available"
|
||||
android:textSize="16sp" >
|
||||
</TextView>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/linerLayout3"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal" >
|
||||
|
||||
<TextView
|
||||
android:id="@+id/excerpt"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit..."
|
||||
android:textColor="#909090"
|
||||
android:textSize="13sp" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/linearLayout4"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal" >
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/selected"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0"
|
||||
android:focusable="false" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/date"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:text="Jan 01, 00:00"
|
||||
android:textColor="#909090"
|
||||
android:textSize="13sp" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/marked"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0"
|
||||
android:clickable="true"
|
||||
android:src="@android:drawable/star_off" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/published"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0"
|
||||
android:clickable="true"
|
||||
android:src="@drawable/ic_rss_bw" >
|
||||
</ImageView>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
@ -66,6 +66,7 @@ public class FeedsFragment extends Fragment implements OnItemClickListener, OnSh
|
||||
private int m_selectedFeedId;
|
||||
private static final String ICON_PATH = "/org.fox.ttrss/icons/";
|
||||
private boolean m_enableFeedIcons;
|
||||
private boolean m_feedIconsChecked = false;
|
||||
|
||||
public interface OnFeedSelectedListener {
|
||||
public void onFeedSelected(Feed feed);
|
||||
@ -118,6 +119,7 @@ public class FeedsFragment extends Fragment implements OnItemClickListener, OnSh
|
||||
if (savedInstanceState != null) {
|
||||
m_selectedFeedId = savedInstanceState.getInt("selectedFeedId");
|
||||
m_feeds = savedInstanceState.getParcelable("feeds");
|
||||
m_feedIconsChecked = savedInstanceState.getBoolean("feedIconsChecked");
|
||||
}
|
||||
|
||||
View view = inflater.inflate(R.layout.feeds_fragment, container, false);
|
||||
@ -165,6 +167,7 @@ public class FeedsFragment extends Fragment implements OnItemClickListener, OnSh
|
||||
|
||||
out.putInt("selectedFeedId", m_selectedFeedId);
|
||||
out.putParcelable("feeds", m_feeds);
|
||||
out.putBoolean("feedIconsChecked", m_feedIconsChecked);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -255,6 +258,8 @@ public class FeedsFragment extends Fragment implements OnItemClickListener, OnSh
|
||||
|
||||
GetIconsTask git = new GetIconsTask(baseUrl);
|
||||
git.execute(m_feeds);
|
||||
|
||||
m_feedIconsChecked = true;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.d(TAG, "Error receiving icons configuration");
|
||||
@ -307,7 +312,7 @@ public class FeedsFragment extends Fragment implements OnItemClickListener, OnSh
|
||||
else
|
||||
setLoadingStatus(R.string.blank, false);
|
||||
|
||||
if (m_enableFeedIcons) getFeedIcons();
|
||||
if (m_enableFeedIcons && !m_feedIconsChecked) getFeedIcons();
|
||||
|
||||
return;
|
||||
}
|
||||
|
@ -50,6 +50,8 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener {
|
||||
private ArticleList m_selectedArticles = new ArticleList();
|
||||
|
||||
private ArticleOps m_articleOps;
|
||||
private boolean m_smallScreenMode = false;
|
||||
private boolean m_portraitMode = false;
|
||||
|
||||
public ArticleList getSelectedArticles() {
|
||||
return m_selectedArticles;
|
||||
@ -74,11 +76,14 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener {
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
|
||||
m_portraitMode = getActivity().getWindowManager().getDefaultDisplay().getOrientation() % 2 == 0;
|
||||
|
||||
if (savedInstanceState != null) {
|
||||
m_feed = savedInstanceState.getParcelable("feed");
|
||||
m_articles = savedInstanceState.getParcelable("articles");
|
||||
m_activeArticleId = savedInstanceState.getInt("activeArticleId");
|
||||
m_selectedArticles = savedInstanceState.getParcelable("selectedArticles");
|
||||
m_smallScreenMode = savedInstanceState.getBoolean("smallScreenMode");
|
||||
}
|
||||
|
||||
View view = inflater.inflate(R.layout.headlines_fragment, container, false);
|
||||
@ -103,6 +108,7 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener {
|
||||
public void onAttach(Activity activity) {
|
||||
super.onAttach(activity);
|
||||
m_feed = ((MainActivity)activity).getActiveFeed();
|
||||
m_smallScreenMode = ((MainActivity)activity).getSmallScreenMode();
|
||||
m_articleOps = (ArticleOps) activity;
|
||||
}
|
||||
|
||||
@ -168,6 +174,7 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener {
|
||||
out.putParcelable("articles", m_articles);
|
||||
out.putInt("activeArticleId", m_activeArticleId);
|
||||
out.putParcelable("selectedArticles", m_selectedArticles);
|
||||
out.putBoolean("smallScreenMode", m_smallScreenMode);
|
||||
}
|
||||
|
||||
public void setLoadingStatus(int status, boolean showProgress) {
|
||||
@ -286,14 +293,14 @@ public class HeadlinesFragment extends Fragment implements OnItemClickListener {
|
||||
final Article article = items.get(position);
|
||||
|
||||
if (v == null) {
|
||||
int layoutId = R.layout.headlines_row;
|
||||
int layoutId = (m_smallScreenMode && m_portraitMode) ? R.layout.headlines_row_small : R.layout.headlines_row;
|
||||
|
||||
switch (getItemViewType(position)) {
|
||||
case VIEW_UNREAD:
|
||||
layoutId = R.layout.headlines_row_unread;
|
||||
layoutId = (m_smallScreenMode && m_portraitMode) ? R.layout.headlines_row_small_unread : R.layout.headlines_row_unread;
|
||||
break;
|
||||
case VIEW_SELECTED:
|
||||
layoutId = R.layout.headlines_row_selected;
|
||||
layoutId = (m_smallScreenMode && m_portraitMode) ? R.layout.headlines_row_small_selected : R.layout.headlines_row_selected;
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -1235,4 +1235,8 @@ public class MainActivity extends FragmentActivity implements FeedsFragment.OnFe
|
||||
Log.d(TAG, "onCatSelected");
|
||||
viewCategory(cat, m_prefs.getBoolean("browse_cats_like_feeds", false));
|
||||
}
|
||||
|
||||
public boolean getSmallScreenMode() {
|
||||
return m_smallScreenMode;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user