2011-08-29 21 views
7

Tôi đang trong quá trình phát triển ứng dụng trình đọc sách điện tử cho máy tính bảng Android 3.0. Để bắt đầu với tôi có một đoạn dữ liệu chuỗi lớn. Tôi muốn chia/ngắt chuỗi đó thành các trang dựa trên kích thước màn hình của thiết bị [Tôi định sử dụng trình chuyển đổi văn bản hoặc trình xem flipper]. Mặc dù tôi đã thử sử dụng phương thức getWindowManager() nhưng tôi không thể nhận được kết quả mong muốn.Chia nhỏ văn bản lớn thành các trang trong trình chuyển văn bản android hoặc xem flipper

Trong chủ đề sau, đề xuất rằng Trình chuyển văn bản tự động ngắt văn bản theo kích thước màn hình. Nhưng tôi không nghĩ vậy. Managing text in android applicaiton like in a eBook

Đây là logic tôi sử dụng:

// retreiving the flipper  
    flipper = (ViewFlipper) findViewById(R.id.new_view_flipper);   

    // obtaining screen dimensions  
    Display display = getWindowManager().getDefaultDisplay(); 
    int screenWidth = display.getWidth(); 
    int screenHeight = display.getHeight(); 

    // contentString is the whole string of the book 

    while (contentString != null && contentString.length() != 0) 
    { 
     totalPages ++; 

     // creating new textviews for every page 
     TextView contentTextView = new TextView(this); 
     contentTextView.setWidth(ViewGroup.LayoutParams.FILL_PARENT); 
     contentTextView.setHeight(ViewGroup.LayoutParams.FILL_PARENT); 
     contentTextView.setMaxHeight(screenHeight); 
     contentTextView.setMaxWidth(screenWidth); 

     float textSize = contentTextView.getTextSize(); 
     Paint paint = new Paint(); 
     paint.setTextSize(textSize); 

     int numChars = 0; 
     int lineCount = 0; 
     int maxLineCount = screenHeight/contentTextView.getLineHeight(); 
     contentTextView.setLines(maxLineCount); 

     while ((lineCount < maxLineCount) && (numChars < contentString.length())) { 
      numChars = numChars + paint.breakText(contentString.substring(numChars), true, screenWidth, null); 
      lineCount ++; 
     } 

     // retrieve the String to be displayed in the current textbox 
     String toBeDisplayed = contentString.substring(0, numChars); 
     contentString = contentString.substring(numChars); 
     contentTextView.setText(toBeDisplayed); 
     flipper.addView(contentTextView); 


     numChars = 0; 
     lineCount = 0; 
    } 
+0

Xem câu trả lời của tôi tại đây http://stackoverflow.com/questions/20204348/how-to-break-styled-text-into-pages-in-android – mixel

Trả lời

2

Đây là tất cả các bạn cần phải thực hiện việc mã của bạn.

DisplayMetrics dm = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(dm); 
    int screenWidth = dm.widthPixels; 
    int screenHeight= dm.heightPixels; 

Thay thế khối mã sau bằng của tôi. Nó sẽ hoạt động.

Display display = getWindowManager().getDefaultDisplay(); 
int screenWidth = display.getWidth(); 
int screenHeight = display.getHeight(); 
Các vấn đề liên quan