目前,我正在使用CVS来跟踪我的SourceForge项目.我有以下要求.
大部分时间我都是一个糟糕的互联网连接.最近,我计划迁移到分布式源代码控制 - Mercurial,以便我有时可以脱机工作.
我读了下面的文章.我相信我可以使用以下方法来保留我之前在CVS分支下的工作流程.
但是,我看不出最终用户的观点有什么不同.我可以知道你们通常适用哪种神话吗?为什么?
我收到了贡献者的补丁.显然,他在行李箱里制作补丁.但是,我想将他的更改提交给一个新的分支.我可以通过Tortoise-Hg知道如何做到这一点吗?
我可以知道知道某项活动是否已被销毁的正确方法是什么?目前,我使用以下方式.
private volatile boolean isOnDestroyCalled = false;
@Override
protected void onDestroy() {
super.onDestroy();
isOnDestroyCalled = true;
}
public boolean isOnDestroyCalled() {
return this.isOnDestroyCalled;
}
Run Code Online (Sandbox Code Playgroud)
有没有比上面更好的方法?
我可以知道是否可以更改ProgressDialog消息显示的字体字体DialogFragment?
public class LoadFromCloudTaskFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
this.progressDialog = new ProgressDialog(this.getActivity());
this.progressDialog.setMessage(progressMessage);
this.progressDialog.setCanceledOnTouchOutside(false);
return progressDialog;
}
Run Code Online (Sandbox Code Playgroud)
通过继承创建自定义类ProgressDialog可能是其中一种方式.但是,我想知道还有更好的选择吗?可悲的是,我们没有ProgressDialog.Builder.
我尝试过的另一种选择是
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
this.progressDialog = new ProgressDialog(this.getActivity());
this.progressDialog.setMessage(progressMessage);
this.progressDialog.setCanceledOnTouchOutside(false);
Utils.setCustomFont(this.progressDialog.findViewById(android.R.id.message), Utils.ROBOTO_LIGHT_FONT);
return progressDialog;
}
Run Code Online (Sandbox Code Playgroud)
但这会给我错误
android.util.AndroidRuntimeException:在添加内容之前必须调用requestFeature()
目前,我有以下页面 ViewPager
滚动INFO选项卡中的页面时,将隐藏工具栏.这种行为是通过实施CoordinatorLayout,AppBarLayout并app:layout_scrollFlags
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:elevation="0dp"
android:elevation="0dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" >
<android.support.v7.widget.Toolbar
app:layout_scrollFlags="scroll|enterAlways|snap"
android:id="@+id/toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:background="@android:color/transparent"
app:elevation="0dp"
android:elevation="0dp"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabIndicatorColor="?attr/detailedStockTabIndicatorColor" />
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>
Run Code Online (Sandbox Code Playgroud)
所以,这就是滚动后的样子.
由于这是一个ViewPager,如果我滑动到FINANCIAL选项卡,它将如下所示.
由于,FINANCIAL选项卡中的页面不可滚动,我们希望不要隐藏Toolbar.
我想知道,layout_scrollFlags当刷到不同的ViewPager页面时,如何使工具栏再次显示以前隐藏使用?
我可以知道如何确定是否在JPanel中找到了某个组件?
boolean isThisComponentFoundInJPanel(Component c)
{
Component[] components = jPanel.getComponents();
for (Component component : components) {
if (c== component) {
return true;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
使用循环效率不高.有没有更好的方法?
我正在使用Google Play服务版本13中的AdMob.我意识到,当我将广告放入其中时ScrollView,AdMob会在从服务器成功获取广告后尝试执行不需要的自动滚动.
package com.example.admob_bug;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdSize;
import com.google.android.gms.ads.AdView;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.LinearLayout;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Create the adView.
adView = new AdView(this);
adView.setAdUnitId("a151b03485063e0");
adView.setAdSize(AdSize.BANNER);
// Lookup your LinearLayout assuming it's been given
// the attribute android:id="@+id/mainLayout".
LinearLayout layout = (LinearLayout)findViewById(R.id.advertisement);
// Add the adView to it.
layout.addView(adView);
// Initiate a generic request.
AdRequest adRequest = new AdRequest.Builder().build();
// Load the …Run Code Online (Sandbox Code Playgroud) 目前,我在我的应用程序中提供了2个主题,基于用户的最后选择 - 黑暗主题和浅色主题.
在主要活动启动期间,我将执行以下操作.
public class MyFragmentActivity extends FragmentActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
// getUserLastThemeChoice will either return R.style.Theme_My_Light or
// R.style.Theme_My_Dark.
this.setTheme(getUserLastThemeChoice());
super.onCreate(savedInstanceState);
Run Code Online (Sandbox Code Playgroud)
在我AndroidManifest.xml,我有以下
<application
...
android:theme="@style/Theme.My.Dark" >
Run Code Online (Sandbox Code Playgroud)
由于硬编码值AndroidManifest.xml,如果用户先前的选择是轻主题,我将观察以下内容.
AndroidManifest.xmlthis.setTheme主要应用程序将更改为白色主题Activity在那里我可以避免这种过渡观察吗?就是这样,根据他们的最后选择直接呈现给用户.
p/s注意,如果从清单中删除主题信息,它将没有多大帮助.由于系统默认使用holo dark.您仍然会观察到过渡,特别是在慢速设备中.
我的传统holo应用程序曾经非常快速地启动.
最近,我花了1年兼职,将holo app移植到材料设计的应用程序.这是我所做的一些重大改变.
ActionBarSherlock到AppCompat工具栏支持库我现在面临的一个问题是我的材料设计应用程序启动速度慢.它比我的全息设计应用程序显着更慢(超过2秒).
注意,在启动应用程序之前,我已经确保我提前终止了进程(通过设置 - >应用程序 - >强制停止).
正如您从视频中看到的那样,一旦我点击图标,ActionBar立即显示全息应用程序.对于材料设计的应用程序,您需要等待大约2至3秒,只有Toolbar将显示.
起初,我想用来TraceView调试和导致缓慢的原因.但是,我意识到TraceView只能在已经启动的应用程序上使用.
我已经证实我没有在我的执行任何耗时的任务Application,Activity和Fragment.由于我的全息应用程序和材料设计的应用程序共享相同的逻辑代码,我无法弄清楚我的材料设计应用程序的速度较慢的原因.
有没有人面临同样的问题?我想知道,有没有什么好方法可以找到根本原因?
我有以下应用程序代码。
public static long advanceByMax1HourWithoutOverflow(long currentTimeMillis) {
ZoneId zoneId = ZoneId.systemDefault();
ZonedDateTime zonedDateTime = Instant.ofEpochMilli(currentTimeMillis).atZone(zoneId);
// 0-23
int hour = zonedDateTime.getHour();
if (hour < 23) {
zonedDateTime = zonedDateTime.plusHours(1);
return zonedDateTime.toInstant().toEpochMilli();
}
// 0-59
int minute = zonedDateTime.getMinute();
if (minute < 59) {
zonedDateTime = zonedDateTime.plusMinutes(1);
return zonedDateTime.toInstant().toEpochMilli();
}
return currentTimeMillis;
}
Run Code Online (Sandbox Code Playgroud)
我用以下内容为它编写了一个单元测试。
@Test
public void advanceByMax1HourWithoutOverflow() {
/*
27 October 2018
1540648800000 -> 1540652400000
22:00 -> 23:00
*/
long currentTimeMillis = 1540648800000L;
long expected = 1540652400000L;
long …Run Code Online (Sandbox Code Playgroud) android ×7
java ×2
mercurial ×2
admob ×1
performance ×1
swing ×1
threetenbp ×1
tortoisehg ×1
unit-testing ×1