{"id":1285,"date":"2021-03-26T17:23:09","date_gmt":"2021-03-26T09:23:09","guid":{"rendered":"https:\/\/badgameshow.com\/fly\/?p=1285"},"modified":"2021-09-15T17:12:25","modified_gmt":"2021-09-15T09:12:25","slug":"android-banner%e8%87%aa%e9%81%a9%e6%87%89-%e7%b6%b2%e8%b7%af%e6%92%88%e5%8f%96%e5%9c%96%e7%89%87%e5%a4%a7%e5%b0%8f","status":"publish","type":"post","link":"https:\/\/badgameshow.com\/fly\/android-banner%e8%87%aa%e9%81%a9%e6%87%89-%e7%b6%b2%e8%b7%af%e6%92%88%e5%8f%96%e5%9c%96%e7%89%87%e5%a4%a7%e5%b0%8f\/","title":{"rendered":"Android Banner\u81ea\u9069\u61c9 \u7db2\u8def\u6488\u53d6\u5716\u7247\u5927\u5c0f"},"content":{"rendered":"<h1>Android Banner\u81ea\u9069\u61c9 \u7db2\u8def\u6488\u53d6\u5716\u7247\u5927\u5c0f<\/h1>\n<ol>\n<li><a href=\"#a\">\u5c0e\u5165Glide<\/a><\/li>\n<li><a href=\"#b\">\u4e00\u9801\u5f0f\u7684RecyclerView<\/a><\/li>\n<li><a href=\"#c\">\u53d6\u5f97\u771f\u5be6\u5bec\u9ad8\u5de5\u5177\u985e<\/a><\/li>\n<li><a href=\"#d\">\u5275\u5efaBannerAdapter<\/a><\/li>\n<li><a href=\"#e\">BannerView<\/a><\/li>\n<li><a href=\"#f\">\u8abf\u7528Banner<\/a><\/li>\n<li><a href=\"#g\">\u6548\u679c\u5c55\u793a<\/a><\/li>\n<\/ol>\n<hr \/>\n<p><a id=\"a\"><\/a><\/p>\n<h4>1.\u5c0e\u5165Glide<\/h4>\n<h5>build.gradle(Module)<\/h5>\n<pre><code class=\"language-Gradle line-numbers\">dependencies {\n    implementation 'com.github.bumptech.glide:glide:4.11.0'\n}\n<\/code><\/pre>\n<p><a id=\"b\"><\/a><\/p>\n<h4>2.\u4e00\u9801\u5f0f\u7684RecyclerView<\/h4>\n<pre><code class=\"language-Kotlin line-numbers\">import android.content.Context\nimport androidx.recyclerview.widget.LinearLayoutManager\nimport androidx.recyclerview.widget.PagerSnapHelper\nimport androidx.recyclerview.widget.RecyclerView\nimport androidx.recyclerview.widget.SnapHelper\n\n\/**\n * Author: FlyWei\n * E-mail: tony91097@gmail.com\n * Date: 2021\/4\/7\n *\/\nclass ViewPagerRecyclerView(context: Context) : RecyclerView(context) {\n\n    \/\/\u9801\u9762\u8f49\u63db\u76e3\u807d\n    interface OnPagerChangeListener {\n        fun onPagerChange(position: Int)\n    }\n\n    private var onPageChangeListener: OnPagerChangeListener? = null\n    var position = 0\n\n    init {\n        layoutManager = LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false)\n        \/\/\u6539\u70ba\u4e00\u9801\u5f0f\u8a2d\u7f6e\u6ed1\u52d5\u76e3\u807d\n        val snapHelper: SnapHelper = PagerSnapHelper()\n        snapHelper.attachToRecyclerView(this)\n        addOnScrollListener(object : OnScrollListener() {\n            override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {\n                recyclerView.layoutManager.also { layoutManager ->\n                    if (layoutManager is LinearLayoutManager) {\n                        val first = layoutManager.findFirstVisibleItemPosition()\n                        if (position != first) {\n                            position = first\n                            onPageChangeListener?.onPagerChange(position)\n                        }\n                    }\n                }\n            }\n        })\n    }\n\n    fun setPagePosition(position: Int) {\n        smoothScrollToPosition(position)\n    }\n\n    fun setOnPagerChangeListener(onPageChangeListener: OnPagerChangeListener) {\n        this.onPageChangeListener = onPageChangeListener\n    }\n}\n<\/code><\/pre>\n<p><a id=\"c\"><\/a><\/p>\n<h4>3.\u53d6\u5f97\u771f\u5be6\u5bec\u9ad8\u5de5\u5177\u985e<\/h4>\n<pre><code class=\"language-Kotlin line-numbers\">import android.app.Activity\nimport android.content.res.Resources\nimport android.util.DisplayMetrics\nimport android.util.TypedValue\n\n\/**\n * Author: FlyWei\n * E-mail: tony91097@gmail.com\n * Date: 2021\/4\/12\n *\/\n\nclass GetDisplayUtil {\n\n    companion object {\n        private lateinit var displayMetrics: DisplayMetrics\n\n        @JvmStatic\n        fun getInstance(activity: Activity): GetDisplayUtil {\n            displayMetrics = DisplayMetrics()\n            activity.display?.getRealMetrics(displayMetrics)\n            return GetDisplayUtil()\n        }\n    }\n\n    fun getRealWidth(): Float {\n        return displayMetrics.widthPixels.toFloat()\n    }\n\n    fun getRealHeight(): Float {\n        val navigationHeight = Resources.getSystem().getDimensionPixelSize(\n            Resources.getSystem().getIdentifier(\n                \"navigation_bar_height\",\n                \"dimen\",\n                \"android\"\n            )\n        )\n        val statusBarHeight = Resources.getSystem().getDimensionPixelSize(\n            Resources.getSystem().getIdentifier(\n                \"status_bar_height\",\n                \"dimen\",\n                \"android\"\n            )\n        )\n        return (displayMetrics.heightPixels - statusBarHeight - navigationHeight).toFloat()\n    }\n}\n\nval Int.dp\n    get() = TypedValue.applyDimension(\n        TypedValue.COMPLEX_UNIT_DIP,\n        this.toFloat(),\n        Resources.getSystem().displayMetrics\n    )\n<\/code><\/pre>\n<p><a id=\"d\"><\/a><\/p>\n<h4>4.\u5275\u5efaBannerAdapter<\/h4>\n<h3>banner_item.xml<\/h3>\n<pre><code class=\"language-XML line-numbers\"><?xml version=\"1.0\" encoding=\"utf-8\"?>\n<androidx.constraintlayout.widget.ConstraintLayout\n    xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"\n    xmlns:app=\"http:\/\/schemas.android.com\/apk\/res-auto\"\n    xmlns:tools=\"http:\/\/schemas.android.com\/tools\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\">\n\n    <ImageView\n        android:id=\"@+id\/imageView\"\n        android:layout_width=\"0dp\"\n        android:layout_height=\"0dp\"\n        android:scaleType=\"fitCenter\"\n        app:layout_constraintBottom_toBottomOf=\"parent\"\n        app:layout_constraintEnd_toEndOf=\"parent\"\n        app:layout_constraintStart_toStartOf=\"parent\"\n        app:layout_constraintTop_toTopOf=\"parent\"\n        tools:srcCompat=\"@tools:sample\/avatars\" \/>\n<\/androidx.constraintlayout.widget.ConstraintLayout>\n<\/code><\/pre>\n<pre><code class=\"language-Kotlin line-numbers\">import android.content.Context\nimport android.content.Intent\nimport android.net.Uri\nimport android.view.LayoutInflater\nimport android.view.View\nimport android.view.ViewGroup\nimport android.widget.ImageView\nimport androidx.recyclerview.widget.RecyclerView\nimport com.bumptech.glide.Glide\n\n\n\/**\n * Author: FlyWei\n * E-mail: tony91097@gmail.com\n * Date: 2021\/4\/7\n *\/\n\nclass BannerAdapter(val images: ArrayList<String>, val links: ArrayList<String>) : RecyclerView.Adapter<BannerAdapter.BannerHolder>() {\n\n    private lateinit var context: Context\n\n    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BannerHolder {\n        context = parent.context\n        return BannerHolder(\n            LayoutInflater.from(context).inflate(R.layout.banner_item, parent, false)\n        )\n    }\n\n    override fun getItemCount(): Int {\n        return images.size\n    }\n\n    override fun onBindViewHolder(holder: BannerHolder, position: Int) {\n        holder.setDate(position)\n    }\n\n    inner class BannerHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {\n        private val imageView: ImageView = itemView.findViewById(R.id.imageView)\n        fun setDate(position: Int) {\n            Glide.with(context)\n                .load(images[position])\n                .into(imageView)\n\n            imageView.setOnClickListener {\n                val intent = Intent(Intent.ACTION_VIEW)\n                intent.data = Uri.parse(links[position])\n                context.startActivity(intent)\n            }\n        }\n    }\n}\n<\/code><\/pre>\n<p><a id=\"e\"><\/a><\/p>\n<h4>5.BannerView<\/h4>\n<pre><code class=\"language-Kotlin line-numbers\">import android.app.Activity\nimport android.graphics.Bitmap\nimport android.graphics.Color\nimport android.graphics.Outline\nimport android.view.Gravity\nimport android.view.View\nimport android.view.ViewGroup\nimport android.view.ViewOutlineProvider\nimport android.widget.ImageView\nimport android.widget.LinearLayout\nimport android.widget.TextView\nimport androidx.core.content.ContextCompat\nimport fly.com.gittest.GetDisplayUtil\nimport fly.com.gittest.dp\nimport java.util.*\n\n\/**\n * Author: FlyWei\n * E-mail: tony91097@gmail.com\n * Date: 2021\/4\/12\n *\/\n\nclass BannerView(private val activity: Activity) {\n\n    private lateinit var viewPagerRecyclerView: ViewPagerRecyclerView\n    private lateinit var bgView: View\n    private lateinit var previous: ImageView\n    private lateinit var next: ImageView\n    private lateinit var skip: TextView\n    private lateinit var positionBar: LinearLayout\n    private var points = arrayListOf<ImageView>()\n\n    \/\/\u53d6\u5f97\u624b\u6a5f\u9ad8\u5ea6\u5bec\u5ea6(px)\n    private val getDisplayUtil = GetDisplayUtil.getInstance(activity)\n    private val realHeight = getDisplayUtil.getRealHeight()\n    private val realWidth = getDisplayUtil.getRealWidth()\n\n    \/\/\u53d6\u5f97\u80cc\u666fView\n    fun getBgView(): View {\n        bgView = View(activity).apply {\n            layoutParams = ViewGroup.LayoutParams(\n                ViewGroup.LayoutParams.MATCH_PARENT,\n                ViewGroup.LayoutParams.MATCH_PARENT\n            )\n            setBackgroundColor(Color.parseColor(\"#53000000\"))\n            setOnClickListener(null)\n        }\n        return bgView\n    }\n\n    \/\/\u91cd\u65b0\u8a08\u7b97View\u5927\u5c0f\n    fun changeView(bitmap: Bitmap) {\n        viewPagerRecyclerView.apply {\n            layoutParams.height = (layoutParams.width.toFloat() \/ bitmap.width.toFloat() * bitmap.height.toFloat()).toInt()\n            y = realHeight \/ 2 - layoutParams.height \/ 2\n            requestLayout()\n            skip.y = y + 9.dp\n            positionBar.y = y + layoutParams.height - positionBar.height - 12.dp\n        }\n    }\n\n    \/\/\u521d\u59cb\u5316RecyclerView\n    fun getViewPagerRecyclerView(\n        bitmap: Bitmap,\n        images: ArrayList<String>,\n        links: ArrayList<String>\n    ): ViewPagerRecyclerView {\n        viewPagerRecyclerView = ViewPagerRecyclerView(activity).apply {\n            layoutParams = ViewGroup.LayoutParams(\n                (realWidth - 82.dp).toInt(),\n                ((realWidth - 82.dp) \/ bitmap.width.toFloat() * bitmap.height.toFloat()).toInt()\n            )\n            \/\/\u5207\u5713\u89d2\n            outlineProvider = object : ViewOutlineProvider() {\n                override fun getOutline(view: View, outline: Outline) {\n                    outline.setRoundRect(\n                        0,\n                        0,\n                        view.width,\n                        view.height,\n                        20.dp\n                    )\n                }\n            }\n            clipToOutline = true\n            adapter = BannerAdapter(images, links)\n            x = realWidth \/ 375f * 41f\n            y = realHeight \/ 2 - layoutParams.height \/ 2\n        }\n        return viewPagerRecyclerView\n    }\n\n    \/\/\u5224\u65b7\u6700\u5f8c\u4e00\u5f35\u986f\u793a\u7565\u904e\n    fun getSkipView(images: ArrayList<String>): TextView {\n        val rootView = activity.findViewById<View>(android.R.id.content) as ViewGroup\n        skip = TextView(activity).apply {\n            layoutParams = ViewGroup.LayoutParams(53.dp.toInt(), 24.dp.toInt())\n            text = \"\u7565\u904e\"\n            textSize = 12f\n            gravity = Gravity.CENTER\n            setTextColor(Color.WHITE)\n            visibility = if (viewPagerRecyclerView.position == images.size - 1) {\n                View.VISIBLE\n            } else {\n                View.GONE\n            }\n            background = ContextCompat.getDrawable(activity, R.drawable.button_corner)\n            x = viewPagerRecyclerView.x + viewPagerRecyclerView.layoutParams.width - layoutParams.width - 6.dp\n            y = viewPagerRecyclerView.y + 9.dp\n            setOnClickListener {\n                rootView.removeView(bgView)\n                rootView.removeView(viewPagerRecyclerView)\n                rootView.removeView(previous)\n                rootView.removeView(next)\n                rootView.removeView(it)\n                rootView.removeView(positionBar)\n            }\n        }\n        return skip\n    }\n\n    fun getPreviousView(): ImageView {\n        previous = ImageView(activity).apply {\n            layoutParams = ViewGroup.LayoutParams(20.dp.toInt(), 20.dp.toInt())\n            setImageResource(R.drawable.banner_no_previous)\n            x = viewPagerRecyclerView.x + 9\n            y =\n                viewPagerRecyclerView.y + viewPagerRecyclerView.layoutParams.height \/ 2 - layoutParams.height \/ 2\n            setOnClickListener {\n                if (viewPagerRecyclerView.position < 1) {\n                    return@setOnClickListener\n                }\n                viewPagerRecyclerView.setPagePosition(viewPagerRecyclerView.position - 1)\n            }\n        }\n        return previous\n    }\n\n    fun getNextView(images: ArrayList<String>): ImageView {\n        next = ImageView(activity).apply {\n            layoutParams = ViewGroup.LayoutParams(20.dp.toInt(), 20.dp.toInt())\n            if (images.size == 1) {\n                setImageResource(R.drawable.banner_no_next)\n            } else {\n                setImageResource(R.drawable.banner_yes_next)\n            }\n            x =\n                viewPagerRecyclerView.x + viewPagerRecyclerView.layoutParams.width - layoutParams.width - 9\n            y =\n                viewPagerRecyclerView.y + viewPagerRecyclerView.layoutParams.height \/ 2 - layoutParams.height \/ 2\n            setOnClickListener {\n                if (viewPagerRecyclerView.position > images.size - 2) {\n                    return@setOnClickListener\n                }\n                viewPagerRecyclerView.setPagePosition(viewPagerRecyclerView.position + 1)\n            }\n        }\n        return next\n    }\n\n    fun getPositionBarView(images: ArrayList<String>): LinearLayout {\n        positionBar = LinearLayout(activity).apply {\n            layoutParams = ViewGroup.LayoutParams((20 * images.size).dp.toInt(), 10.dp.toInt())\n            gravity = Gravity.CENTER\n            for (index in images.indices) {\n                val point = ImageView(activity).apply {\n                    setPadding(8, 0, 8, 0)\n                    if (index == 0) {\n                        setImageResource(R.drawable.now_point)\n                    } else {\n                        setImageResource(R.drawable.no_point)\n                    }\n                }\n                addView(point)\n                points.add(point)\n            }\n            x =\n                viewPagerRecyclerView.x + viewPagerRecyclerView.layoutParams.width - layoutParams.width - 18.dp\n            y =\n                viewPagerRecyclerView.y + viewPagerRecyclerView.layoutParams.height - layoutParams.height - 13.dp\n        }\n        return positionBar\n    }\n\n    fun getPoints() = points\n\n}\n<\/code><\/pre>\n<p><a id=\"f\"><\/a><\/p>\n<h4>6.\u8abf\u7528Banner<\/h4>\n<pre><code class=\"language-Kotlin line-numbers\">import android.graphics.Bitmap\nimport android.graphics.drawable.Drawable\nimport android.os.Bundle\nimport android.view.View\nimport androidx.appcompat.app.AppCompatActivity\nimport com.bumptech.glide.Glide\nimport com.bumptech.glide.request.target.CustomTarget\nimport com.bumptech.glide.request.target.SimpleTarget\nimport com.bumptech.glide.request.transition.Transition\n\n\nclass MainActivity : AppCompatActivity() {\n\n    var images = arrayListOf<String>()\n    var links = arrayListOf<String>()\n\n    override fun onCreate(savedInstanceState: Bundle?) {\n        super.onCreate(savedInstanceState)\n        setContentView(R.layout.activity_main)\n\n        \/\/\u7372\u53d6\u8cc7\u6599\n        images.add(\"https:\/\/www.twgreatdaily.com\/imgs\/image\/174\/17483365.jpg\")\n        images.add(\"https:\/\/obs.line-scdn.net\/0ha6Hy3DiJPhl1ABRAe6pBTk9WPXZGbC0aETZvGjZuYC0KMi1OSzEkd1YINy4LZXlHGzZyf1kAJShQNilMGTIk\/w1200\")\n        images.add(\"https:\/\/i2.kknews.cc\/SIG=cnvpnt\/213o00023q071sr823p3.jpg\")\n        images.add(\"https:\/\/firebasestorage.googleapis.com\/v0\/b\/check-in-4ebce.appspot.com\/o\/images%2Fgirl.jpg?alt=media&token=f14825f8-a791-407b-a109-89bff5e5f7d7\")\n        images.add(\"https:\/\/firebasestorage.googleapis.com\/v0\/b\/check-in-4ebce.appspot.com\/o\/images%2Fgirl2.jpg?alt=media&token=9df39e6f-5420-4044-9b98-189943b0d2ca\")\n\n        links.add(\"https:\/\/www.twgreatdaily.com\/imgs\/image\/174\/17483365.jpg\")\n        links.add(\"https:\/\/obs.line-scdn.net\/0ha6Hy3DiJPhl1ABRAe6pBTk9WPXZGbC0aETZvGjZuYC0KMi1OSzEkd1YINy4LZXlHGzZyf1kAJShQNilMGTIk\/w1200\")\n        links.add(\"https:\/\/i2.kknews.cc\/SIG=cnvpnt\/213o00023q071sr823p3.jpg\")\n        links.add(\"https:\/\/firebasestorage.googleapis.com\/v0\/b\/check-in-4ebce.appspot.com\/o\/images%2Fgirl.jpg?alt=media&token=f14825f8-a791-407b-a109-89bff5e5f7d7\")\n        links.add(\"https:\/\/firebasestorage.googleapis.com\/v0\/b\/check-in-4ebce.appspot.com\/o\/images%2Fgirl2.jpg?alt=media&token=9df39e6f-5420-4044-9b98-189943b0d2ca\")\n    }\n\n    fun show(view: View) {\n        val bannerView = BannerView(this)\n        val myView = bannerView.getBgView()\n        addContentView(myView, myView.layoutParams)\n\n        \/\/\u53d6\u5f97\u7b2c\u4e00\u5f35\u5716\u7247\u5bec\u9ad8\n        Glide.with(this)\n            .asBitmap()\n            .load(images[0]).into(object : CustomTarget<Bitmap>() {\n                override fun onLoadCleared(placeholder: Drawable?) {}\n\n                override fun onResourceReady(bitmap: Bitmap, transition: Transition<in Bitmap>?) {\n                    val viewPagerRecyclerView = bannerView.getViewPagerRecyclerView(bitmap, images, links)\n                    addContentView(viewPagerRecyclerView, viewPagerRecyclerView.layoutParams)\n\n                    val skipView = bannerView.getSkipView(images)\n                    addContentView(skipView, skipView.layoutParams)\n\n                    val previousView = bannerView.getPreviousView()\n                    addContentView(previousView, previousView.layoutParams)\n\n                    val nextView = bannerView.getNextView(images)\n                    addContentView(nextView, nextView.layoutParams)\n\n                    val positionBarView = bannerView.getPositionBarView(images)\n                    addContentView(positionBarView, positionBarView.layoutParams)\n\n                    viewPagerRecyclerView.setOnPagerChangeListener(object : ViewPagerRecyclerView.OnPagerChangeListener {\n                        override fun onPagerChange(position: Int) {\n                            if (position == images.size - 1) {\n                                skipView.visibility = View.VISIBLE\n                                nextView.setImageResource(R.drawable.banner_no_next)\n                            } else {\n                                skipView.visibility = View.GONE\n                                nextView.setImageResource(R.drawable.banner_yes_next)\n                            }\n                            if (position != 0) {\n                                previousView.setImageResource(R.drawable.banner_yes_previous)\n                            } else {\n                                previousView.setImageResource(R.drawable.banner_no_previous)\n                            }\n                            for (index in 0 until bannerView.getPoints().size) {\n                                bannerView.getPoints()[position]\n                                    .setImageResource(R.drawable.now_point)\n                                if (position != index) {\n                                    bannerView.getPoints()[index]\n                                        .setImageResource(R.drawable.no_point)\n                                }\n                            }\n                            Glide.with(this@MainActivity).asBitmap().load(images[position])\n                                .into(object : CustomTarget<Bitmap>() {\n                                    override fun onLoadCleared(placeholder: Drawable?) {}\n\n                                    override fun onResourceReady(bitmap: Bitmap, transition: Transition<in Bitmap?>?) {\n                                        bannerView.changeView(bitmap)\n                                    }\n                                })\n                        }\n                    })\n                }\n            })\n    }\n}\n<\/code><\/pre>\n<p><a id=\"g\"><\/a><\/p>\n<h4>7.\u6548\u679c\u5c55\u793a<\/h4>\n<p><a href=\"https:\/\/badgameshow.com\/fly\/wp-content\/uploads\/2021\/04\/20210419_115354.gif\"><img decoding=\"async\" src=\"https:\/\/badgameshow.com\/fly\/wp-content\/uploads\/2021\/04\/20210419_115354.gif\" width=\"30%\"\/><\/a><\/p>\n\n<div style=\"font-size: 0px; height: 0px; line-height: 0px; margin: 0; padding: 0; clear: both;\"><\/div>","protected":false},"excerpt":{"rendered":"<p>Android Banner\u81ea\u9069\u61c9 \u7db2\u8def\u6488\u53d6\u5716\u7247\u5927\u5c0f \u5c0e\u5165Glide \u4e00\u9801\u5f0f\u7684RecyclerView \u53d6\u5f97\u771f &hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"pgc_sgb_lightbox_settings":"","footnotes":""},"categories":[5],"tags":[13,177,15],"class_list":["post-1285","post","type-post","status-publish","format-standard","hentry","category-android","tag-android","tag-banner","tag-kotlin"],"_links":{"self":[{"href":"https:\/\/badgameshow.com\/fly\/wp-json\/wp\/v2\/posts\/1285","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/badgameshow.com\/fly\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/badgameshow.com\/fly\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/badgameshow.com\/fly\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/badgameshow.com\/fly\/wp-json\/wp\/v2\/comments?post=1285"}],"version-history":[{"count":6,"href":"https:\/\/badgameshow.com\/fly\/wp-json\/wp\/v2\/posts\/1285\/revisions"}],"predecessor-version":[{"id":1496,"href":"https:\/\/badgameshow.com\/fly\/wp-json\/wp\/v2\/posts\/1285\/revisions\/1496"}],"wp:attachment":[{"href":"https:\/\/badgameshow.com\/fly\/wp-json\/wp\/v2\/media?parent=1285"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/badgameshow.com\/fly\/wp-json\/wp\/v2\/categories?post=1285"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/badgameshow.com\/fly\/wp-json\/wp\/v2\/tags?post=1285"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}