小编Mat*_*lak的帖子

共享元素转换:将活动转换为嵌套在另一个活动中的片段

我正在尝试将共享元素转换添加到我的应用程序中.

场景是用户点击图像缩略图,而不是使用全屏图像视图打开另一个活动.

如果共享视图直接托管在目标活动的布局中,则此方法正常.适用于进入/退出动画.但是当我试图在嵌套在目标活动中的片段中实现类似的效果时,这种方法不起作用.有趣的是,输入动画没有显示,但退出动画工作正常.

另一个更复杂的视图层次结构是,如果目标视图(ImageView)托管在视图寻呼机中,该视图寻呼机托管在目标活动的帧布局中.

有人有同样的问题吗?

编辑:我的点击监听器代码

public class OnClickPicture extends OnClickBase {
  private ObjectPicture object;

  public OnClickPicture(Activity_Parent activity, ObjectPicture object) {
    super(activity);
    this.object = object;
  }

  public void onClick(View v) {

    picasso.load(object.getFullUrl()).fetch();
    Intent intent = new Intent(activity, ActivityPicture.class);
    intent.putExtra("picture_object", helper.gson.toJson(object));

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && v != null) {
      Pair<View, String> p1 = Pair.create(v, "image");
      ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, p1);
      activity.startActivity(intent, options.toBundle());
    } else {
      activity.startActivity(intent);
    }

  }

}
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-transitions

25
推荐指数
1
解决办法
6480
查看次数

导航组件与视图 pager2 和嵌套导航的正确使用

我正在尝试使用 ViewPager2 + FragmentStateAdapter + 导航组件构建以下视图结构/导航。

先决条件:单一活动架构,有一个导航图

1. 片段 A包含一个视图寻呼机。视图寻呼机使用 FragmentStateAdapter。

2. Fragment B是通过 FragmentStateAdapter ("lives" in view pager) 实例化的。

3. 片段 C - 应该从片段 B 导航到。 --> 这就是问题所在。


方法一:ViewPager2 + FragmentStateAdapter + 从 Fragment B 声明的导航

    <fragment
        android:id="@+id/fragmentA"
        android:name="com.abc.FragmentA"
        android:label="FragmentA" />

    <fragment
        android:id="@+id/fragmentB"
        android:name="com.abc.FragmentB"
        android:label="FragmentB">
        <action
            android:id="@+id/to_fragmentC"
            app:destination="@id/fragmentC" />
    </fragment>

    <fragment
        android:id="@+id/fragmentC"
        android:name="com.abc.FragmentC"
        android:label="FragmentC" />
Run Code Online (Sandbox Code Playgroud)

片段B执行:

 FragmentBDirections
            .toFragmentC()
            .let { findNavController().navigate(it) }
Run Code Online (Sandbox Code Playgroud)

结果 :

App crash
java.lang.IllegalArgumentException: navigation destination com.abc:id/to_fragmentC is unknown to this NavController
Run Code Online (Sandbox Code Playgroud)

方法二:ViewPager2 + …

android android-architecture-navigation androidx

9
推荐指数
1
解决办法
3376
查看次数

如何验证App Engine后端上的Android ID令牌

我的目标是为我的Android应用程序构建简单的应用程序引擎后端.此后端的目的只是验证Android客户端调用,并提供密码,该密码将用于与我的服务器的进一步https通信.于是我开始ccording这个http://android-developers.blogspot.in/2013/01/verifying-back-end-calls-from-android.html文章.客户端看起来像:

GoogleAuthUtil.getToken(MainActivityy.this, "my.email@gmail.com", "audience:server:client_id:my_Client_ID_for_web_applications.apps.googleusercontent.com");
Run Code Online (Sandbox Code Playgroud)

此方法返回如下所示的标记:

eyJhbGciOiJSUzI1NiIsImtpZCI6ImFiMWIyZTllNGU2NGE0MmIzM2U3YjMxMDQwNzUyMzIxYmVlMmJkYmEifQ.eyJpc3MiOiJhY2NvdW50cy5nb29nbGUuY29tIiwiZW1haWwiOiJtYXRvLnBldHJ1bGFrQGdtYWlsLmNvbSIsInZlcmlmaWVkX2VtYWlsIjoidHJ1ZSIsImVtYWlsX3ZlcmlmaWVkIjoidHJ1ZSIsImNpZCI6IjU0ODk4MTY3NzkzMC0xcGxxamF2OWloOGU4MGJ0ZWdpYzg0YmcycjlxN2MwMi5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImF6cCI6IjU0ODk4MTY3NzkzMC0xcGxxamF2OWloOGU4MGJ0ZWdpYzg0YmcycjlxN2MwMi5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImF1ZCI6IjU0ODk4MTY3NzkzMC5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsImlkIjoiMTE4MTQ0NjEyNDkzMTM1NzYxOTUwIiwic3ViIjoiMTE4MTQ0NjEyNDkzMTM1NzYxOTUwIiwiaWF0IjoxMzY4NzExODk0LCJleHAiOjEzNjg3MTU3OTR9.oN5ncz6MEAZBW8NXDhc4O-Y82C2mma675lbw9ZZA-1bs8zM9FKQG1K97PfNfxJFImiPMY8UYIjhqDIkHpErjaV0KDJpLv8NkmsdADOFjt5eQkFGWf92fufL7QEIkWqLL1fKxG7f8-OR59O5AOAVchdgtqDt4DhEH7oHfAZqf3wU  
Run Code Online (Sandbox Code Playgroud)

现在我想在后端验证这个令牌.所以我使用谷歌插件为eclpise创建了新的Web应用程序项目.它会生成一些示例项目.对于这个项目,我从上面提到的文章中添加了Checker类.看起来像这样:

import java.io.IOException;
import java.security.GeneralSecurityException;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Logger;

import com.google.api.client.googleapis.auth.oauth2.GoogleIdToken;
import com.google.api.client.googleapis.auth.oauth2.GoogleIdTokenVerifier;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.gson.GsonFactory;

public class Checker {

private final List mClientIDs;
private final String mAudience;
private final GoogleIdTokenVerifier mVerifier;
private final JsonFactory mJFactory;
private String mProblem = "Verification failed. (Time-out?)";

private  Logger log ;

public Checker(String[] clientIDs, String audience) {
    mClientIDs = Arrays.asList(clientIDs);
    mAudience = audience;
    NetHttpTransport transport = new NetHttpTransport();
    mJFactory = new …
Run Code Online (Sandbox Code Playgroud)

authentication google-app-engine android google-oauth

7
推荐指数
1
解决办法
7605
查看次数

Android动态创建表 - 性能不佳

我希望你能帮助我.我想创建动态表(截图).我是通过以下代码创建的:

    TableLayout tl = (TableLayout) findViewById(R.id.main_table);

    FOR. 1-300.........
    TableRow tr_head = new TableRow(this);
    tr_head.setId(10);
    tr_head.setBackgroundColor(Color.CYAN);
    tr_head.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));
    RelativeLayout rl = new RelativeLayout(this);
    rl.setId(20);


    ImageButton xyz = new ImageButton(this);
    xyz.setId(21);
    xyz.setPadding(5, 5, 5, 5);
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT );
    params.addRule(RelativeLayout.ALIGN_PARENT_LEFT, 20 );
    rl.addView(xyz,params); 

    tr_head.addView(rl);
    tl.addView(tr_head, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); 
    END OF FOR.......  
Run Code Online (Sandbox Code Playgroud)

通过类似的代码,我很好地创建了两种类型的项目,一种用于类别(3个子视图),一种用于类别项目(10个子视图).然后我使用代码bellow为按钮和整个项目分配onclick监听器:

int count = tl.getChildCount();
    for(int i = 0; i < count; i++){
        TableRow v = (TableRow)tl.getChildAt(i);

        if(v.getChildAt(0) instanceof RelativeLayout){
            RelativeLayout relativ = (RelativeLayout)v.getChildAt(0);

        if(relativ.getChildCount()>5)
            relativ.setOnClickListener(new MyClickListener());
                     ........... …
Run Code Online (Sandbox Code Playgroud)

android tablelayout android-layout

3
推荐指数
1
解决办法
3042
查看次数

Lighttpd SSL错误

我试图为我的lighttpd服务器设置SSL.lighttpd -v显示:lighttpd/1.4.26(ssl) - 一个轻快的网络服务器

  1. 我创建server.pem文件.
  2. 我在lighttpd.conf中添加以下行:$ SERVER ["socket"] ==":443"{ssl.engine ="enable"ssl.pemfile ="/ etc/lighttpd /certs/server.pem"}
  3. 我重新启动服务器,一切正常.
  4. 我运行:openssl s_client -connect mydomain.com:443并获得响应:CONNECTED(00000003)......没有错误,没有

  5. 但是当我想通过浏览器访问mydomain.com:443它失败并在error.log中我可以看到:

    (connections.c.294)SSL:1错误:1407609C:SSL例程:SSL23_GET_CLIENT_HELLO:http请求

任何人都可以帮助解决这个问题,因为我真的不知道哪里可以出问题而且我不是那么多Linux家伙,我只需要在Web服务器上设置ssl.谢谢

ssl lighttpd

3
推荐指数
1
解决办法
5968
查看次数