Small tablet support (< 8")
* Portrait mode ** feed list is now smaller and article list is bigger * Landscape mode ** small tablets display always only two columns
This commit is contained in:
parent
d5c0f015e5
commit
416d155e85
@ -11,9 +11,9 @@
|
|||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:id="@+id/feeds_fragment"
|
android:id="@+id/feeds_fragment"
|
||||||
android:layout_width="300dp"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_weight="0"
|
android:layout_weight="0.6"
|
||||||
android:background="?feedlistBackground" >
|
android:background="?feedlistBackground" >
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
||||||
@ -21,6 +21,7 @@
|
|||||||
android:id="@+id/vertical_fragment_container"
|
android:id="@+id/vertical_fragment_container"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
android:layout_weight="0.4"
|
||||||
android:orientation="vertical" >
|
android:orientation="vertical" >
|
||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
|
@ -2,10 +2,11 @@ package org.fox.ttrss;
|
|||||||
|
|
||||||
import org.fox.ttrss.util.DatabaseHelper;
|
import org.fox.ttrss.util.DatabaseHelper;
|
||||||
|
|
||||||
import android.content.res.Configuration;
|
|
||||||
import android.database.sqlite.SQLiteDatabase;
|
import android.database.sqlite.SQLiteDatabase;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.v4.app.FragmentActivity;
|
import android.support.v4.app.FragmentActivity;
|
||||||
|
import android.util.DisplayMetrics;
|
||||||
|
import android.util.FloatMath;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.Display;
|
import android.view.Display;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
@ -23,12 +24,30 @@ public class CommonActivity extends FragmentActivity {
|
|||||||
|
|
||||||
private boolean m_smallScreenMode = true;
|
private boolean m_smallScreenMode = true;
|
||||||
private boolean m_compatMode = false;
|
private boolean m_compatMode = false;
|
||||||
|
private boolean m_smallTablet = false;
|
||||||
|
|
||||||
protected void setSmallScreen(boolean smallScreen) {
|
protected void setSmallScreen(boolean smallScreen) {
|
||||||
Log.d(TAG, "m_smallScreenMode=" + smallScreen);
|
Log.d(TAG, "m_smallScreenMode=" + smallScreen);
|
||||||
m_smallScreenMode = smallScreen;
|
m_smallScreenMode = smallScreen;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void setupSmallTabletFlag() {
|
||||||
|
|
||||||
|
DisplayMetrics displayMetrics = new DisplayMetrics();
|
||||||
|
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
|
||||||
|
|
||||||
|
float inHeight = displayMetrics.heightPixels / displayMetrics.ydpi;
|
||||||
|
float inWidth = displayMetrics.widthPixels / displayMetrics.xdpi;
|
||||||
|
|
||||||
|
float inDiag = FloatMath.sqrt(inHeight * inHeight + inWidth * inWidth);
|
||||||
|
|
||||||
|
if (inDiag < 8) {
|
||||||
|
m_smallTablet = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
Log.d(TAG, "m_smallTabletMode=" + m_smallTablet);
|
||||||
|
}
|
||||||
|
|
||||||
private void initDatabase() {
|
private void initDatabase() {
|
||||||
DatabaseHelper dh = new DatabaseHelper(getApplicationContext());
|
DatabaseHelper dh = new DatabaseHelper(getApplicationContext());
|
||||||
|
|
||||||
@ -67,6 +86,10 @@ public class CommonActivity extends FragmentActivity {
|
|||||||
public boolean isSmallScreen() {
|
public boolean isSmallScreen() {
|
||||||
return m_smallScreenMode;
|
return m_smallScreenMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isSmallTablet() {
|
||||||
|
return m_smallTablet;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isCompatMode() {
|
public boolean isCompatMode() {
|
||||||
return m_compatMode;
|
return m_compatMode;
|
||||||
|
@ -645,6 +645,8 @@ public class MainActivity extends CommonActivity implements OnlineServices {
|
|||||||
setContentView(R.layout.main);
|
setContentView(R.layout.main);
|
||||||
|
|
||||||
setSmallScreen(findViewById(R.id.headlines_fragment) == null);
|
setSmallScreen(findViewById(R.id.headlines_fragment) == null);
|
||||||
|
|
||||||
|
setupSmallTabletFlag();
|
||||||
|
|
||||||
IntentFilter filter = new IntentFilter();
|
IntentFilter filter = new IntentFilter();
|
||||||
filter.addAction(OfflineDownloadService.INTENT_ACTION_SUCCESS);
|
filter.addAction(OfflineDownloadService.INTENT_ACTION_SUCCESS);
|
||||||
@ -662,7 +664,7 @@ public class MainActivity extends CommonActivity implements OnlineServices {
|
|||||||
if (!isCompatMode()) {
|
if (!isCompatMode()) {
|
||||||
|
|
||||||
if (!isSmallScreen()) {
|
if (!isSmallScreen()) {
|
||||||
findViewById(R.id.feeds_fragment).setVisibility(m_selectedArticle != null && isPortrait() ? View.GONE : View.VISIBLE);
|
findViewById(R.id.feeds_fragment).setVisibility(m_selectedArticle != null && (isPortrait() || isSmallTablet()) ? View.GONE : View.VISIBLE);
|
||||||
findViewById(R.id.article_fragment).setVisibility(m_selectedArticle != null ? View.VISIBLE : View.GONE);
|
findViewById(R.id.article_fragment).setVisibility(m_selectedArticle != null ? View.VISIBLE : View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -998,8 +1000,8 @@ public class MainActivity extends CommonActivity implements OnlineServices {
|
|||||||
if (m_selectedArticle != null) {
|
if (m_selectedArticle != null) {
|
||||||
closeArticle();
|
closeArticle();
|
||||||
refresh();
|
refresh();
|
||||||
/* } else if (m_activeFeed != null) {
|
} else if (m_activeFeed != null) {
|
||||||
closeFeed(); */
|
closeFeed();
|
||||||
} else if (m_activeCategory != null) {
|
} else if (m_activeCategory != null) {
|
||||||
closeCategory();
|
closeCategory();
|
||||||
} else if (allowQuit) {
|
} else if (allowQuit) {
|
||||||
@ -1008,6 +1010,28 @@ public class MainActivity extends CommonActivity implements OnlineServices {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void closeFeed() {
|
||||||
|
if (m_activeFeed != null) {
|
||||||
|
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
|
||||||
|
ft.replace(R.id.headlines_fragment, new DummyFragment(), "");
|
||||||
|
ft.commit();
|
||||||
|
|
||||||
|
if (m_activeFeed.is_cat) {
|
||||||
|
FeedCategoriesFragment cats = (FeedCategoriesFragment) getSupportFragmentManager().findFragmentByTag(FRAG_CATS);
|
||||||
|
cats.setSelectedCategory(null);
|
||||||
|
} else {
|
||||||
|
FeedsFragment feeds = (FeedsFragment) getSupportFragmentManager().findFragmentByTag(FRAG_FEEDS);
|
||||||
|
feeds.setSelectedFeed(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
m_activeFeed = null;
|
||||||
|
|
||||||
|
initMainMenu();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
@Override
|
@Override
|
||||||
public boolean onOptionsItemSelected(MenuItem item) {
|
public boolean onOptionsItemSelected(MenuItem item) {
|
||||||
@ -1864,7 +1888,7 @@ public class MainActivity extends CommonActivity implements OnlineServices {
|
|||||||
ft.hide(getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES));
|
ft.hide(getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES));
|
||||||
ft.add(R.id.fragment_container, frag, FRAG_ARTICLE);
|
ft.add(R.id.fragment_container, frag, FRAG_ARTICLE);
|
||||||
} else {
|
} else {
|
||||||
findViewById(R.id.feeds_fragment).setVisibility(isPortrait() ? View.GONE : View.VISIBLE);
|
findViewById(R.id.feeds_fragment).setVisibility(isPortrait() || isSmallTablet() ? View.GONE : View.VISIBLE);
|
||||||
findViewById(R.id.article_fragment).setVisibility(View.VISIBLE);
|
findViewById(R.id.article_fragment).setVisibility(View.VISIBLE);
|
||||||
ft.replace(R.id.article_fragment, frag, FRAG_ARTICLE);
|
ft.replace(R.id.article_fragment, frag, FRAG_ARTICLE);
|
||||||
|
|
||||||
|
@ -291,10 +291,12 @@ public class OfflineActivity extends CommonActivity implements
|
|||||||
setContentView(R.layout.main);
|
setContentView(R.layout.main);
|
||||||
|
|
||||||
setSmallScreen(findViewById(R.id.headlines_fragment) == null);
|
setSmallScreen(findViewById(R.id.headlines_fragment) == null);
|
||||||
|
|
||||||
|
setupSmallTabletFlag();
|
||||||
|
|
||||||
if (!isCompatMode()) {
|
if (!isCompatMode()) {
|
||||||
if (!isSmallScreen()) {
|
if (!isSmallScreen()) {
|
||||||
findViewById(R.id.feeds_fragment).setVisibility(m_selectedArticleId != 0 && isPortrait() ? View.GONE : View.VISIBLE);
|
findViewById(R.id.feeds_fragment).setVisibility(m_selectedArticleId != 0 && (isPortrait() || isSmallTablet()) ? View.GONE : View.VISIBLE);
|
||||||
findViewById(R.id.article_fragment).setVisibility(m_selectedArticleId != 0 ? View.VISIBLE : View.GONE);
|
findViewById(R.id.article_fragment).setVisibility(m_selectedArticleId != 0 ? View.VISIBLE : View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1399,7 +1401,7 @@ public class OfflineActivity extends CommonActivity implements
|
|||||||
ft.hide(getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES));
|
ft.hide(getSupportFragmentManager().findFragmentByTag(FRAG_HEADLINES));
|
||||||
ft.add(R.id.fragment_container, frag, FRAG_ARTICLE);
|
ft.add(R.id.fragment_container, frag, FRAG_ARTICLE);
|
||||||
} else {
|
} else {
|
||||||
findViewById(R.id.feeds_fragment).setVisibility(isPortrait() ? View.GONE : View.VISIBLE);
|
findViewById(R.id.feeds_fragment).setVisibility(isPortrait() || isSmallTablet() ? View.GONE : View.VISIBLE);
|
||||||
findViewById(R.id.article_fragment).setVisibility(View.VISIBLE);
|
findViewById(R.id.article_fragment).setVisibility(View.VISIBLE);
|
||||||
ft.replace(R.id.article_fragment, frag, FRAG_ARTICLE);
|
ft.replace(R.id.article_fragment, frag, FRAG_ARTICLE);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user