{"id":580,"date":"2023-02-22T16:18:07","date_gmt":"2023-02-22T08:18:07","guid":{"rendered":"https:\/\/iichen.cn\/?p=580"},"modified":"2023-02-22T16:18:07","modified_gmt":"2023-02-22T08:18:07","slug":"android-%e8%bd%ac%e5%9c%ba%e5%8a%a8%e7%94%bb","status":"publish","type":"post","link":"https:\/\/iichen.cn\/?p=580","title":{"rendered":"Android-\u8f6c\u573a\u52a8\u753b"},"content":{"rendered":"<h4>1. OverridePendingTransition<\/h4>\n<blockquote><p>\n  Activity\u8fc7\u573a\u52a8\u753b\uff0c\u652f\u6301\u6709\u9650\n<\/p><\/blockquote>\n<h4>2. ActivityOptions<\/h4>\n<blockquote><p>\n  \u53ef\u5b9e\u73b0\u2460\u6548\u679c<br \/>\n  Flutter\u7684hero\u52a8\u753b (ShareElement)\n<\/p><\/blockquote>\n<pre><code class=\"language-java line-numbers\">ActivityOptionsCompat.makeCustomAnimation()\nActivityOptionsCompat.makeClipRevealAnimation()\nActivityOptionsCompat.makeScaleUpAnimation()\n\/\/ \u4e0b\u9762\u7684\u76f8\u5173\u5b9e\u73b0\u53ef\u4ee5\u7528\u5728\u8fd9\u91cc-Activity\u8fc7\u6e21\u606d\u559c\u67d0\u4e9b\u5143\u7d20\u6216\u8005\u5355\u72ecView\u53d8\u6362\u4f7f\u7528(TransitionManager)\nActivityOptionsCompat.makeSceneTransitionAnimation()\nActivityOptionsCompat.makeSceneTransitionAnimation()\nActivityOptionsCompat.makeThumbnailScaleUpAnimation()\n<\/code><\/pre>\n<blockquote><p>\n  \u6269\u5c55\u7ee7\u627fTransition <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/github.com\/yellowcath\/YcShareElement\/blob\/master\/ycshareelement\/src\/main\/java\/com\/hw\/ycshareelement\/transition\/ChangeTextTransition.java\" title=\"\u793a\u4f8b\">\u793a\u4f8b<\/a>\n<\/p><\/blockquote>\n<h5>2.1 \u9875\u9762\u8df3\u8f6c<\/h5>\n<ul>\n<li>\u6253\u5f00\u5f00\u5173 \u9ed8\u8ba4\u5f00\u542f<br \/>\n> requestWindowFeature(Window.FEATURE_CONTENT_TRANSITIONS);<\/li>\n<li>\u9664\u4e86\u5171\u4eab\u5143\u7d20\u5916\u8f6c\u573a<br \/>\n>Window.setEnterTransition()<br \/>\nWindow.setExitTransition()<br \/>\nWindow.setSharedElementEnterTransition()<br \/>\nWindow.setSharedElementExitTransition()<\/li>\n<li>\u5171\u4eab\u5143\u7d20\u8f6c\u573a<br \/>\n> \u548cFlutter Hero\u52a8\u753b\u4e00\u6837 \u9700\u8981\u76f8\u540c\u7684transitionName<\/li>\n<\/ul>\n<p><strong>ActivityA<\/strong><\/p>\n<pre><code class=\"language-java line-numbers\">private void gotoDetailActivity(Contacts contacts, final View avatarImg, final View nameTxt) {\n    Intent intent = new Intent(ContactActivity.this,DetailActivity.class);\n    Pair&lt;View,String&gt; pair1 = new Pair&lt;&gt;((View)avatarImg,ViewCompat.getTransitionName(avatarImg));\n    Pair&lt;View,String&gt; pair2 = new Pair&lt;&gt;((View)nameTxt,ViewCompat.getTransitionName(nameTxt));\n    \/**\n     *4\u3001\u751f\u6210\u5e26\u6709\u5171\u4eab\u5143\u7d20\u7684Bundle\uff0c\u8fd9\u6837\u7cfb\u7edf\u624d\u4f1a\u77e5\u9053\u8fd9\u51e0\u4e2a\u5143\u7d20\u9700\u8981\u505a\u52a8\u753b\n     *\/\n    ActivityOptionsCompat activityOptionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(ContactActivity.this, pair1, pair2);\n    ActivityCompat.startActivity(ContactActivity.this,intent,activityOptionsCompat.toBundle());\n}\n<\/code><\/pre>\n<p><strong>ActivityB<\/strong><\/p>\n<pre><code class=\"language-java line-numbers\">\/**\n * 3\u3001\u8bbe\u7f6eShareElementTransition,\u6307\u5b9a\u7684ShareElement\u4f1a\u6267\u884c\u8fd9\u4e2aTransiton\u52a8\u753b\n *\/\n\/\/ \u66f4\u591a\u7684transition\u8f6c\u573a\u52a8\u753b \u53c2\u8003\u4e0b\u9762 \u81ea\u5b9a\u4e49Transition\nTransitionSet transitionSet = new TransitionSet();\ntransitionSet.addTransition(new ChangeBounds());\ntransitionSet.addTransition(new ChangeTransform());\ntransitionSet.addTarget(avatarImg);\ntransitionSet.addTarget(nameTxt);\ngetWindow().setSharedElementEnterTransition(transitionSet);\ngetWindow().setSharedElementExitTransition(transitionSet);\n<\/code><\/pre>\n<hr \/>\n<h5>2.2 \u9ed8\u8ba4\u5b9e\u73b0<\/h5>\n<ul>\n<li>\u9ed8\u8ba4\u5b9e\u73b0\uff1aFade\uff0cSlide\uff0cExplode<\/li>\n<li>ChangeBounds \u5f53 View \u7684\u4f4d\u7f6e\u6216\u8005\u5927\u5c0f\u53d1\u751f\u53d8\u5316\u65f6\u89e6\u53d1\u5bf9\u5e94\u7684\u8f6c\u573a\u6548\u679c<\/li>\n<\/ul>\n<pre><code class=\"language-java line-numbers\">ChangeBounds transition = new ChangeBounds();\ntransition.setInterpolator(new AnticipateInterpolator());\nTransitionManager.beginDelayedTransition(mRoot, transition);\nConstraintLayout.LayoutParams layoutParams = (ConstraintLayout.LayoutParams) view3.getLayoutParams();\nif (layoutParams.leftMargin == 400) {\n    layoutParams.leftMargin = 50;\n} else {\n    layoutParams.leftMargin = 400;\n}\nview3.setLayoutParams(layoutParams);\n<\/code><\/pre>\n<ul>\n<li>ChangeClipBounds \u5f53\u8c03\u7528 view.setClipBounds() \u65f6<\/li>\n<\/ul>\n<pre><code class=\"language-java line-numbers\">ChangeClipBounds transition = new ChangeClipBounds();\ntransition.setInterpolator(new BounceInterpolator());\nTransitionManager.beginDelayedTransition(mRoot, transition);\nint width = view2.getWidth();\nint height = view2.getHeight();\nint gap = 140;\nRect rect = new Rect(0, gap, width, height - gap);\nif (rect.equals(view2.getClipBounds())) {\n    view2.setClipBounds(null);\n} else {\n    view2.setClipBounds(rect);\n}\n<\/code><\/pre>\n<ul>\n<li>ChangeScroll \u5f53\u8c03\u7528 view.scrollTo()<\/li>\n<\/ul>\n<pre><code class=\"language-java line-numbers\">ChangeScroll transition = new ChangeScroll();\ntransition.setInterpolator(new AnticipateOvershootInterpolator());\nTransitionManager.beginDelayedTransition(mRoot, transition);\nif (view1.getScrollX() == -100 &amp;&amp; view1.getScrollY() == -100) {\n    view1.scrollTo(0, 0);\n} else {\n    view1.scrollTo(-100, -100);\n}\n<\/code><\/pre>\n<ul>\n<li>ChangeTransform View \u7684 translation\u3001scale \u548c rotation \u53d1\u751f\u6539\u53d8\u65f6<\/li>\n<\/ul>\n<pre><code class=\"language-java line-numbers\">ChangeTransform transition = new ChangeTransform();\ntransition.setInterpolator(new OvershootInterpolator());\nTransitionManager.beginDelayedTransition(mRoot, transition);\nif (view1.getTranslationX() == 100 &amp;&amp; view1.getTranslationY() == 100) {\n    view1.setTranslationX(0);\n    view1.setTranslationY(0);\n} else {\n    view1.setTranslationX(100);\n    view1.setTranslationY(100);\n}\nif (view2.getRotationX() == 30f) {\n    view2.setRotationX(0);\n} else {\n    view2.setRotationX(30);\n}\nif (view3.getRotationY() == 30f) {\n    view3.setRotationY(0);\n} else {\n    view3.setRotationY(30);\n}\nif (view4.getScaleX() == 0.5f &amp;&amp; view4.getScaleY() == 0.5f) {\n    view4.setScaleX(1f);\n    view4.setScaleY(1f);\n} else {\n    view4.setScaleX(0.5f);\n    view4.setScaleY(0.5f);\n}\n<\/code><\/pre>\n<h5>2.3 \u81ea\u5b9a\u4e49Transition<\/h5>\n<ul>\n<li>\u7ee7\u627fTransition\uff0c\u5e76\u5b9e\u73b0\u4e0b\u8ff0\u4e09\u4e2a\u65b9\u6cd5<\/li>\n<li>captureStartValues\uff0ccaptureEndValues\u5b58\u5165\u52a8\u753b\u503c<\/li>\n<li>createAnimator\u5185\u53d6\u51fa\u503c\u8fdb\u884c\u76f8\u5173\u52a8\u753b<\/li>\n<\/ul>\n<blockquote><p>\n  <a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/github.com\/18805699674\/TransitionDemo\/tree\/master\/app\/src\/main\/java\/com\/xiaweizi\/transitiondemo\/transition\" title=\"\u793a\u4f8b\u81ea\u5b9a\u4e49\">\u793a\u4f8b\u81ea\u5b9a\u4e49<\/a>\n<\/p><\/blockquote>\n<pre><code class=\"language-java line-numbers\">private static String PROPNAME_TEXT = \"xiaweizi:changeText:text\";\nprivate static String PROPNAME_TEXT_COLOR = \"xiaweizi:changeTextColor:color\";\nprivate static String PROPNAME_TEXT_SIZE = \"xiaweizi:changeTextSize:size\";\nprivate static String PROPNAME_TEXT_LEVEL = \"xiaweizi:changeTextTypeface:level\";\n\n\/\/ \u8bb0\u5f55\u4e0b\u8d77\u59cb\u72b6\u6001\u5c5e\u6027\u503c\nprivate void captureValues(TransitionValues transitionValues) {\n    if (transitionValues == null || !(transitionValues.view instanceof TextView)) return;\n    TextView view = (TextView) transitionValues.view;\n    transitionValues.values.put(PROPNAME_TEXT, view.getText());\n    transitionValues.values.put(PROPNAME_TEXT_COLOR, view.getCurrentTextColor());\n    transitionValues.values.put(PROPNAME_TEXT_SIZE, view.getTextSize());\n    transitionValues.values.put(PROPNAME_TEXT_LEVEL, view.getTag(R.id.type_face_level));\n}\n\n@Override\npublic Animator createAnimator(ViewGroup sceneRoot, TransitionValues startValues, final TransitionValues endValues) {\n    if (startValues == null || endValues == null) {\n        return null;\n    }\n    if (!(endValues.view instanceof TextView)) {\n        return super.createAnimator(sceneRoot, startValues, endValues);\n    }\n    TextView endView = (TextView) endValues.view;\n    int startTextColor = (int) startValues.values.get(PROPNAME_TEXT_COLOR);\n    int endTextColor = (int) endValues.values.get(PROPNAME_TEXT_COLOR);\n    ObjectAnimator animator = ObjectAnimator.ofArgb(endView, new TextColorProperty(), startTextColor, endTextColor);\n    animator.setDuration(300);\n    return animator;\n}\n<\/code><\/pre>\n<h5>2.4 Scene<\/h5>\n<blockquote><p>\n  \u9875\u9762\u5207\u6362 ActivityOptionsCompat.makeSceneTransitionAnimation()<br \/>\n  \u9875\u9762\u5185 View\u53d8\u6362<br \/>\n  &#8211; \u521b\u5efa\u524d\u540e\u53d8\u6362\u7684layout \u6ce8\u610f\u5bf9\u5e94\u524d\u540e\u53d8\u6362View\u9700\u8981\u76f8\u540c\u7684id\n<\/p><\/blockquote>\n<p><a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/mp.weixin.qq.com\/s\/QpIZekpb1xKsseu5urOndA\" title=\"\u8be6\u60c5\">\u8be6\u60c5<\/a><\/p>\n<h4>3. MotionLayout<\/h4>\n<p><a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/mp.weixin.qq.com\/s\/ALR2qOZb_OEd0AwJHEnpog\" title=\"\u8be6\u60c5\">\u8be6\u60c5<\/a><\/p>\n<pre><code class=\"language-java line-numbers\">public class TransitionView extends View {\n    private float mRatio = 1f;\n    private Paint mTextPaint;\n    private int mStartColor;\n    private int mEndColor;\n    private Rect mRect;\n\n    public TransitionView(Context context) {\n        this(context, null);\n    }\n\n    public TransitionView(Context context, AttributeSet attrs) {\n        this(context, attrs, 0);\n    }\n\n    public TransitionView(Context context, AttributeSet attrs, int defStyle) {\n        super(context, attrs, defStyle);\n        initView(context, attrs, defStyle);\n    }\n\n    private void initView(Context context, AttributeSet attrs, int defStyle) {\n        mTextPaint = new Paint(Paint.ANTI_ALIAS_FLAG);\n        mTextPaint.setTextSize(getResources().getDimensionPixelSize(R.dimen.text_size));\n        mTextPaint.setColor(Color.WHITE);\n        mTextPaint.setTypeface(Typeface.DEFAULT_BOLD);\n        mTextPaint.setTextAlign(Paint.Align.CENTER);\n        mStartColor = Color.WHITE;\n        mEndColor = TransitionUtils.getColor(0);\n        mRect = new Rect();\n    }\n\n    public void setRatio(float ratio) {\n        this.mRatio = ratio;\n        invalidate();\n    }\n\n    public float getRatio() {\n        return mRatio;\n    }\n\n    @Override\n    protected void onDraw(Canvas canvas) {\n        super.onDraw(canvas);\n        \/\/ \u7ed8\u5236\u5de6\u8fb9\n        canvas.save();\n        mRect.set(0, 0, (int) (getWidth() * mRatio), getHeight());\n        canvas.clipRect(mRect);\n        mTextPaint.setColor(mStartColor);\n        TransitionUtils.drawTextCenter(canvas, \"\u6587\u672c\u4e09\", getWidth() \/ 2, getHeight() \/ 2, mTextPaint);\n        canvas.restore();\n\n        \/\/ \u7ed8\u5236\u53f3\u8fb9\n        canvas.save();\n        mRect.set((int) (getWidth() * mRatio), 0, getWidth(), getHeight());\n        canvas.clipRect(mRect);\n        mTextPaint.setColor(mEndColor);\n        TransitionUtils.drawTextCenter(canvas, \"\u4e09\u672c\u6587\", getWidth() \/ 2, getHeight() \/ 2, mTextPaint);\n        canvas.restore();\n    }\n}\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>1. OverridePendingTransition Activity\u8fc7\u573a\u52a8\u753b\uff0c\u652f\u6301\u6709\u9650 2. Activ [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11,8],"tags":[],"class_list":["post-580","post","type-post","status-publish","format-standard","hentry","category-android","category-8"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Android-\u8f6c\u573a\u52a8\u753b - IIchen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/iichen.cn\/?p=580\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Android-\u8f6c\u573a\u52a8\u753b - IIchen\" \/>\n<meta property=\"og:description\" content=\"1. OverridePendingTransition Activity\u8fc7\u573a\u52a8\u753b\uff0c\u652f\u6301\u6709\u9650 2. Activ [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/iichen.cn\/?p=580\" \/>\n<meta property=\"og:site_name\" content=\"IIchen\" \/>\n<meta property=\"article:published_time\" content=\"2023-02-22T08:18:07+00:00\" \/>\n<meta name=\"author\" content=\"iichen\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"iichen\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/iichen.cn\/?p=580#article\",\"isPartOf\":{\"@id\":\"https:\/\/iichen.cn\/?p=580\"},\"author\":{\"name\":\"iichen\",\"@id\":\"https:\/\/iichen.cn\/#\/schema\/person\/4a47edf85ab49841df9e8f6aee40b77c\"},\"headline\":\"Android-\u8f6c\u573a\u52a8\u753b\",\"datePublished\":\"2023-02-22T08:18:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/iichen.cn\/?p=580\"},\"wordCount\":56,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/iichen.cn\/#\/schema\/person\/4a47edf85ab49841df9e8f6aee40b77c\"},\"articleSection\":[\"Android\",\"\u7b14\u8bb0\"],\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/iichen.cn\/?p=580#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/iichen.cn\/?p=580\",\"url\":\"https:\/\/iichen.cn\/?p=580\",\"name\":\"Android-\u8f6c\u573a\u52a8\u753b - IIchen\",\"isPartOf\":{\"@id\":\"https:\/\/iichen.cn\/#website\"},\"datePublished\":\"2023-02-22T08:18:07+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/iichen.cn\/?p=580#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/iichen.cn\/?p=580\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/iichen.cn\/?p=580#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/iichen.cn\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Android-\u8f6c\u573a\u52a8\u753b\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/iichen.cn\/#website\",\"url\":\"https:\/\/iichen.cn\/\",\"name\":\"IIchen\",\"description\":\"Just do it!\",\"publisher\":{\"@id\":\"https:\/\/iichen.cn\/#\/schema\/person\/4a47edf85ab49841df9e8f6aee40b77c\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/iichen.cn\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"zh-Hans\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/iichen.cn\/#\/schema\/person\/4a47edf85ab49841df9e8f6aee40b77c\",\"name\":\"iichen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/iichen.cn\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/iichen.cn\/wp-content\/uploads\/2025\/01\/avatar.jpg\",\"contentUrl\":\"https:\/\/iichen.cn\/wp-content\/uploads\/2025\/01\/avatar.jpg\",\"width\":940,\"height\":940,\"caption\":\"iichen\"},\"logo\":{\"@id\":\"https:\/\/iichen.cn\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/www.iichen.cn\"],\"url\":\"https:\/\/iichen.cn\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Android-\u8f6c\u573a\u52a8\u753b - IIchen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/iichen.cn\/?p=580","og_locale":"zh_CN","og_type":"article","og_title":"Android-\u8f6c\u573a\u52a8\u753b - IIchen","og_description":"1. OverridePendingTransition Activity\u8fc7\u573a\u52a8\u753b\uff0c\u652f\u6301\u6709\u9650 2. Activ [&hellip;]","og_url":"https:\/\/iichen.cn\/?p=580","og_site_name":"IIchen","article_published_time":"2023-02-22T08:18:07+00:00","author":"iichen","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"iichen","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"4 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/iichen.cn\/?p=580#article","isPartOf":{"@id":"https:\/\/iichen.cn\/?p=580"},"author":{"name":"iichen","@id":"https:\/\/iichen.cn\/#\/schema\/person\/4a47edf85ab49841df9e8f6aee40b77c"},"headline":"Android-\u8f6c\u573a\u52a8\u753b","datePublished":"2023-02-22T08:18:07+00:00","mainEntityOfPage":{"@id":"https:\/\/iichen.cn\/?p=580"},"wordCount":56,"commentCount":0,"publisher":{"@id":"https:\/\/iichen.cn\/#\/schema\/person\/4a47edf85ab49841df9e8f6aee40b77c"},"articleSection":["Android","\u7b14\u8bb0"],"inLanguage":"zh-Hans","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/iichen.cn\/?p=580#respond"]}]},{"@type":"WebPage","@id":"https:\/\/iichen.cn\/?p=580","url":"https:\/\/iichen.cn\/?p=580","name":"Android-\u8f6c\u573a\u52a8\u753b - IIchen","isPartOf":{"@id":"https:\/\/iichen.cn\/#website"},"datePublished":"2023-02-22T08:18:07+00:00","breadcrumb":{"@id":"https:\/\/iichen.cn\/?p=580#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/iichen.cn\/?p=580"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/iichen.cn\/?p=580#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/iichen.cn\/"},{"@type":"ListItem","position":2,"name":"Android-\u8f6c\u573a\u52a8\u753b"}]},{"@type":"WebSite","@id":"https:\/\/iichen.cn\/#website","url":"https:\/\/iichen.cn\/","name":"IIchen","description":"Just do it!","publisher":{"@id":"https:\/\/iichen.cn\/#\/schema\/person\/4a47edf85ab49841df9e8f6aee40b77c"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/iichen.cn\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"zh-Hans"},{"@type":["Person","Organization"],"@id":"https:\/\/iichen.cn\/#\/schema\/person\/4a47edf85ab49841df9e8f6aee40b77c","name":"iichen","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/iichen.cn\/#\/schema\/person\/image\/","url":"https:\/\/iichen.cn\/wp-content\/uploads\/2025\/01\/avatar.jpg","contentUrl":"https:\/\/iichen.cn\/wp-content\/uploads\/2025\/01\/avatar.jpg","width":940,"height":940,"caption":"iichen"},"logo":{"@id":"https:\/\/iichen.cn\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/www.iichen.cn"],"url":"https:\/\/iichen.cn\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/iichen.cn\/index.php?rest_route=\/wp\/v2\/posts\/580","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/iichen.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/iichen.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/iichen.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/iichen.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=580"}],"version-history":[{"count":0,"href":"https:\/\/iichen.cn\/index.php?rest_route=\/wp\/v2\/posts\/580\/revisions"}],"wp:attachment":[{"href":"https:\/\/iichen.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=580"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/iichen.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=580"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/iichen.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=580"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}