我正在尝试将共享元素转换添加到我的应用程序中.
场景是用户点击图像缩略图,而不是使用全屏图像视图打开另一个活动.
如果共享视图直接托管在目标活动的布局中,则此方法正常.适用于进入/退出动画.但是当我试图在嵌套在目标活动中的片段中实现类似的效果时,这种方法不起作用.有趣的是,输入动画没有显示,但退出动画工作正常.
另一个更复杂的视图层次结构是,如果目标视图(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) 我正在尝试使用 ViewPager2 + FragmentStateAdapter + 导航组件构建以下视图结构/导航。
先决条件:单一活动架构,有一个导航图
1. 片段 A包含一个视图寻呼机。视图寻呼机使用 FragmentStateAdapter。
2. Fragment B是通过 FragmentStateAdapter ("lives" in view pager) 实例化的。
3. 片段 C - 应该从片段 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)
我的目标是为我的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) 我希望你能帮助我.我想创建动态表(截图).我是通过以下代码创建的:
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) 我试图为我的lighttpd服务器设置SSL.lighttpd -v显示:lighttpd/1.4.26(ssl) - 一个轻快的网络服务器
我运行:openssl s_client -connect mydomain.com:443并获得响应:CONNECTED(00000003)......没有错误,没有
但是当我想通过浏览器访问mydomain.com:443它失败并在error.log中我可以看到:
(connections.c.294)SSL:1错误:1407609C:SSL例程:SSL23_GET_CLIENT_HELLO:http请求
任何人都可以帮助解决这个问题,因为我真的不知道哪里可以出问题而且我不是那么多Linux家伙,我只需要在Web服务器上设置ssl.谢谢
android ×4
android-architecture-navigation ×1
androidx ×1
google-oauth ×1
lighttpd ×1
ssl ×1
tablelayout ×1