我正在尝试同步多个Android设备之间的时间戳,以便我可以同时启动任务.我想我可以使用Timer并根据System.currentTimeMillis()设置一个Date,但问题似乎是多个设备的时间戳相距足够远,我没有得到我想要的精度.
如果可能的话,我正在寻找50-100毫秒的某个地方.我的一个想法是使用Android Beam将一个设备的时间戳发送到另一个设备,然后计算一个增量,但事实证明我必须在实际发送和接收消息之前得到时间戳(即,用户越长等待发送,三角洲将越大,这使得该方案完全崩溃.
如何同步两个或更多设备,使其内部时钟彼此间隔不超过100毫秒?如果不使用保留时间的外部服务器,这是否可行?
对于尽可能接近同时在多个设备上执行某些操作的技术的任何其他建议也将受到欢迎.
我正在使用此处概述的Youtube Android Player API:https://developers.google.com/youtube/android/player/
但是,我不能同时在我的活动中获得多个视频.我尝试将两个YouTubePlayerViews放入活动中,如下所示:
activity_main.xml中
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" >
<com.google.android.youtube.player.YouTubePlayerView
android:id="@+id/view_one"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<com.google.android.youtube.player.YouTubePlayerView
android:id="@+id/view_two"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
MainActivity.java
package com.example.multidemo;
import android.os.Bundle;
import com.google.android.youtube.player.YouTubeBaseActivity;
import com.google.android.youtube.player.YouTubeInitializationResult;
import com.google.android.youtube.player.YouTubePlayer;
import com.google.android.youtube.player.YouTubePlayer.Provider;
import com.google.android.youtube.player.YouTubePlayerView;
public class MainActivity extends YouTubeBaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
((YouTubePlayerView) findViewById(R.id.view_one)).initialize("API key", new YouTubePlayer.OnInitializedListener() {
@Override
public void onInitializationSuccess(Provider arg0, YouTubePlayer arg1, boolean arg2) {
arg1.cueVideo("RpwoN_XlN6Y");
}
@Override
public void …Run Code Online (Sandbox Code Playgroud) 我可以通过设置 android:ellipsize="end" 制作一个多行 TextView,其文本被省略号截断,并且我可以通过设置 android:ellipsize="marquee" 制作一个单行 TextView,其文本淡出。但是当 TextView 中有多于一行时,选取框设置不起作用。
有没有办法通过淡出多行 TextView 中的最后一行来截断文本?
编辑:我可以使用两个单独的 TextView 进行一种黑客实现,并向第一个添加 OnLayoutChangeListener 以检查文本是否超过 X 行数,然后将文本从那里剪掉并将其余部分放入第二个中TextView,仅限一行,因此可以使用 ellipsize=marquee 淡出。
<TextView
android:id="@+id/text_one"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/text_two"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:singleLine="true"
/>
Run Code Online (Sandbox Code Playgroud)
<TextView
android:id="@+id/text_one"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/text_two"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="marquee"
android:singleLine="true"
/>
Run Code Online (Sandbox Code Playgroud)
不幸的是,我希望为列表中的每个项目实现这一点,但我找不到方法来做到这一点。我只让它适用于静态页面上两个简单 TextView 的情况。
我希望 BottomNavigationBar 上的菜单项具有没有图标的纯文本标签。不幸的是,design_bottom_navigation_item.xml看起来总是为图标保留一个 24x24dp 的空间,没有公开的方法可以将其设置为消失。甚至在通过它之后,标签布局也被设置为底部|中心_水平的 layout_gravity,并且看起来没有办法以编程方式将 layout_gravity 设置为居中。
在底部导航栏上实现纯文本菜单项目标的最快、最简单的方法是什么?我想我可以通过创建项目布局的自定义版本来做到这一点,然后子类化 BottomNavigationItemView、BottomNavigationMenuView 和 BottomNavigationView 以指定该自定义布局……但这对于一个小小的改变来说似乎是一项艰巨的工作。我错过了更简单的东西吗?