- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我已经让我的应用每隔几毫秒改变一次背景颜色。但它对用户没有吸引力。如果您看过 Instagram 的登录屏幕,它会以非常柔和的速度改变颜色,并且效果模糊。
我只是想为我的应用程序使用那种类型的背景。我应该为此做什么
最佳答案
使用以下代码可能是您的良好开端:
public class BackgroundPainter {
private static final int MIN = 800;
private static final int MAX = 1500;
private final Random random;
public BackgroundPainter() {
random = new Random();
}
public void animate(@NonNull final View target, @ColorInt final int color1,
@ColorInt final int color2) {
final ValueAnimator valueAnimator = ValueAnimator.ofObject(new ArgbEvaluator(), color1, color2);
valueAnimator.setDuration(randInt(MIN, MAX));
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override public void onAnimationUpdate(ValueAnimator animation) {
target.setBackgroundColor((int) animation.getAnimatedValue());
}
});
valueAnimator.addListener(new AnimatorListenerAdapter() {
@Override public void onAnimationEnd(Animator animation) {
//reverse animation
animate(target, color2, color1);
}
});
valueAnimator.setInterpolator(new AccelerateDecelerateInterpolator());
valueAnimator.start();
}
private int randInt(int min, int max) {
return random.nextInt((max - min) + 1) + min;
}
}
使用方法:
final View targetView = findViewById(R.id.root_view);
BackgroundPainter backgroundPainter = new BackgroundPainter();
int color1 = ContextCompat.getColor(this, R.color.colorAccent);
int color2 = ContextCompat.getColor(this, R.color.colorPrimary);
backgroundPainter.animate(targetView, color1, color2);
更新
要更改由多种颜色组成的背景,一般来说是可绘制对象而不是 ValueAnimator
,您可以尝试使用以下解决方案。
我已经在具有 API 19 和 23 的设备上测试了这段代码。
在 colors.xml
中定义颜色:
<color name="color1">#9C27B0</color>
<color name="color2">#FF4081</color>
<color name="color3">#7B1FA2</color>
<color name="color4">#F8BBD0</color>
<color name="color5">#FF5252</color>
<color name="color6">#607D8B</color>
<color name="color7">#FF5722</color>
<color name="color8">#FFA000</color>
在 drawable
中定义渐变:
gradient_1.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:angle="45"
android:endColor="@color/color2"
android:startColor="@color/color1"
android:type="linear"/>
</shape>
gradient_2.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:angle="-45"
android:endColor="@color/color5"
android:startColor="@color/color3"
android:type="linear"/>
</shape>
gradient_3.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:angle="45"
android:endColor="@color/color8"
android:startColor="@color/color7"
android:type="linear"/>
</shape>
在您的项目中创建类 GradientBackgroundPainter
:
public class GradientBackgroundPainter {
private static final int MIN = 4000;
private static final int MAX = 5000;
private final Random random;
private final Handler handler;
private final View target;
private final int[] drawables;
private final Context context;
public GradientBackgroundPainter(@NonNull View target, int[] drawables) {
this.target = target;
this.drawables = drawables;
random = new Random();
handler = new Handler();
context = target.getContext().getApplicationContext();
}
private void animate(final int firstDrawable, int secondDrawable, final int duration) {
if (secondDrawable >= drawables.length) {
secondDrawable = 0;
}
final Drawable first = ContextCompat.getDrawable(context, drawables[firstDrawable]);
final Drawable second = ContextCompat.getDrawable(context, drawables[secondDrawable]);
final TransitionDrawable transitionDrawable =
new TransitionDrawable(new Drawable[] { first, second });
target.setBackgroundDrawable(transitionDrawable);
transitionDrawable.setCrossFadeEnabled(false);
transitionDrawable.startTransition(duration);
final int localSecondDrawable = secondDrawable;
handler.postDelayed(new Runnable() {
@Override public void run() {
animate(localSecondDrawable, localSecondDrawable + 1, randInt(MIN, MAX));
}
}, duration);
}
public void start() {
final int duration = randInt(MIN, MAX);
animate(0, 1, duration);
}
public void stop() {
handler.removeCallbacksAndMessages(null);
}
private int randInt(int min, int max) {
return random.nextInt((max - min) + 1) + min;
}
}
和用法:
public class MainActivity extends AppCompatActivity {
private GradientBackgroundPainter gradientBackgroundPainter;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
View backgroundImage = findViewById(R.id.root_view);
final int[] drawables = new int[3];
drawables[0] = R.drawable.gradient_1;
drawables[1] = R.drawable.gradient_2;
drawables[2] = R.drawable.gradient_3;
gradientBackgroundPainter = new GradientBackgroundPainter(backgroundImage, drawables);
gradientBackgroundPainter.start();
}
@Override protected void onDestroy() {
super.onDestroy();
gradientBackgroundPainter.stop();
}
}
关于android - 登录 Instagram 应用程序时背景如何变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36726598/
我想获取该用户所关注的 Instagram 用户列表。(但不是为我自己,为另一个用户)。 我做 API 调用 GET https://api.instagram.com/v1/users/423423
我提到过这个问题Instagram API: The access_token provided is invalid ,在我自己发布这个问题之前。 我的情况非常相似,我昨天刚刚注册了一个新应用程序,
Instagram 宣布弃用 Instagram 平台 API: “为了不断提高 Instagram 用户的隐私和安全,我们正在加速弃用 Instagram API 平台” 他们的文档和变更日志表示要
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 已关闭 3 年前。 Improve
我正在发送多条 Instagram 直接消息,并希望预先填充在我和我的关注者之间打开直接消息的 URL。我有每个粉丝的 Instagram ID 和用户名。 目前,Instagram 的“收件箱”地址
我正在做一个 Instagram 应用程序。首先想使用 Instagram 的端点。但是很多功能都被关闭了。用户搜索、关注者、关注列表等。 Instagram 宣布将于 7 月 31 日关闭许多 En
- (IBAction)postToInstagram:(id)sender { NSURL *instagramURL = [NSURL URLWithString:@"instagram://ap
我正在尝试创建一个程序,从 Instagram 帐户中检索喜欢、评论等的总数,不一定是评论的内容等,而只是给出特定帐户的喜欢和评论总数。这可能使用 Instagram API 吗? 最佳答案 所以我一
目前我使用 /users/self/media/liked方法,获取响应,阅读 next_max_like_id并一次又一次地请求数据。我试图通过巨大的 count值,但看起来最大计数值只是 30 .
我阅读了 instargam API 并在谷歌中搜索了代码,但没有得到满足我要求的任何确切解决方案。我想像 Facebook 插件一样在我的网站上显示我最近的照片。我的图像看起来像 - 我尝试了以下
我只是想知道是否有办法在 instagram 上获取用户的性别......我浏览了 instagram 的 api 并且从 users/userId 获得的用户信息不包括性别信息。 谢谢你的帮助。 最
假设我有一个 Instagram 帐户和一个网站。我想在网站上显示来自我的 Instagram 帐户的最新照片。我在文档中不清楚的东西:为了得到我的 access_token我需要验证自己的身份吗?我
我正在使用以下查询https://www.instagram.com/graphql/query/?query_id=17851374694183129&id={acountId}&first=100
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve thi
我试图让我的应用程序能够使用除基本权限之外的其他范围,但是当我尝试使用其他范围时,我收到以下错误: Something went wrong :(stdClass Object ( [meta] =>
我正在尝试注册新 Client ID在 Instagram 上,用于提供 API。 但是不知道怎么填Privacy Policy URL .请指导我。 最佳答案 这是格式 @ http://www.g
我有一个显示我的 Instagram 动态的网站。以前我在用Instagram 遵循 API。用户/ self /媒体/最近 此 API 使用我生成一次的访问 token ,并在我的代码中作为变量保存
最近 Instagram 宣布支持多张照片发布。 我尝试使用端点,GET /media/media-id ,但响应只有一张图像的信息。 任何人都可以使用他们的 API 从单个多张照片帖子中检索所有图像
我想检查 Instagram 用户名是否以“正确”的方式可用。目前我正在做的是打开想要的用户名他们的 instagram 页面并检查状态代码是否为 404。但这会带来一个问题,因为如果名称的前一个所有
我正在考虑使用 insta API 的项目,但是当我注册 instagramdeveloper 帐户时,我遇到了一些问题。我找不到创建新客户端的按钮,当我点击管理客户端按钮时,这就是我得到的: 当我点
我是一名优秀的程序员,十分优秀!