按下后面按钮后,Android方向恢复



我有2个活动,在androidManifest.xml

中指定了默认方向
<activity android:name="com.package.name.Activities.BrowseBooksActivity"
        android:screenOrientation="portrait"/>
<activity android:name="com.package.name.Activities.ReadBooksActivity"
        android:screenOrientation="landscape"/>

用户在浏览书效应(在肖像中(中单击一个项目,并启动了读书书效应(在景观中(。但是,当按下后退按钮时,浏览书籍施法最初以肖像的形式开始,大约一秒钟,然后恢复为景观模式。如何解决此问题?

浏览书施加:

class BrowseBooksActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.browsebooksmain_layout)
    fetchBooks ()
    recyclerview_main.layoutManager = LinearLayoutManager(this)
}

fun fetchBooks () {
              // some processing
                runOnUiThread {
                    recyclerview_main.adapter = BrowseBooksAdapter(bookList)
                }}

浏览书籍制品:

class BrowseBooksAdapter (val bookFeed: List<ResourcesList>): RecyclerView.Adapter<CustomViewHolder>()  {
    override fun getItemCount(): Int {
        return bookFeed.count()
    }
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CustomViewHolder {
        val layoutInflater = LayoutInflater.from(parent.context)
        val cellForRow = layoutInflater.inflate(R.layout.browsebooks_layout, parent, false)
        return CustomViewHolder(cellForRow)
    }
    override fun onBindViewHolder(holder: CustomViewHolder, position: Int) {
        holder.v.textview_booktitle?.text = bookFeed[position].name
        Picasso.get().load(bookFeed[position].coverURI).into(holder.v.ImageView_bookcover)
        holder.bookFeed = bookFeed[position]
    }
}
class CustomViewHolder(val v: View, var bookFeed : ResourcesList? = null): RecyclerView.ViewHolder(v) {
    init {
        v.setOnClickListener {
            val intent = Intent (v.context, ReadBooksActivity::class.java)
            intent.putExtra("ID", bookFeed?.id)
            v.context.startActivity(intent)
        }
    }
    }

readbookSactivity:

class ReadBooksActivity : Activity() {
private var mCurlView: CurlView? = null
private var newbookList : ResourcesList? = null
public override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.readbooks_layout)
    var index = 0
    if (lastNonConfigurationInstance != null) {
        index = lastNonConfigurationInstance as Int
    }
    mCurlView = findViewById(R.id.curl)
    mCurlView!!.setSizeChangedObserver(SizeChangedObserver())
    mCurlView!!.setCurrentIndex(index)
    mCurlView!!.setBackgroundColor(-0xdfd7d0)
    var bookId = intent.getIntExtra("ID", 0)
    Thread (Runnable {
            //some processing to load data to mBitmaps
        mCurlView!!.setBitmapProvider(BitmapProvider(mBitmaps))
        }).start()

    mCurlView!!.setEnableTouchPressure(true)
    mCurlView!!.set2PagesLandscape(true)

}

当我们在应用中有单个活动时,似乎是错误。以下链接可能会有所帮助:Android 8.1屏幕导向问题:翻转景观肖像屏幕

对于仍然有此错误问题的任何人,这是Sahil共享的链接中提供的解决方法。

在"第二"活动上,添加以下内容:

    onCreate(){
       setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
}
onPause(){ 
      if (android.os.Build.VERSION.SDK_INT >= 27) {
             setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
      }
}
onResume(){
      if (android.os.Build.VERSION.SDK_INT >= 27) {
             setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
      }
}

最新更新