android之仿微信雙擊放大字體及滑動衝突,文本顯示不全

xml:在scrollview中要使用android:fillViewport="true" ,否則由於scrollview嵌套的佈局使用了gravity="ceter"會出現文本顯示不全以及底部還有很大的空白

<?xml version="1.0" encoding="UTF-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white" >

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="true" >

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
             >

            <TextView
                android:id="@+id/tv_big_text"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:layout_marginBottom="15dp"
                android:layout_marginLeft="15dp"
                android:layout_marginRight="15dp"
                android:layout_marginTop="15dp"
                android:gravity="left|center"
                android:lineSpacingExtra="5dp"
                android:minHeight="500dp"
                android:text="大師法第三方"
                android:textColor="@color/gray_3"
                android:textStyle="bold" />
        </RelativeLayout>
    </ScrollView>

</FrameLayout>


java:雙擊放大

package com.wangzhi.MaMaHelp;

import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.graphics.Point;
import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.widget.FrameLayout;
import android.widget.TextView;

/**
 * 放大文本
 * 
 * @author zhongwr
 * 
 */
public class BigTextActivity extends BaseActivity {

	/***
	 * 
	 * @description 啓動當前act
	 * @author zhongwr
	 * @param content
	 *            放大文本
	 * @param contentSize
	 *            放大字體
	 */
	public static void startBigTextAct(Context context, String content, int contentSize) {
		if (null != context && !Tools.isEmpty(content)) {
			Intent intent = new Intent(context, BigTextActivity.class);
			intent.putExtra("content", content);
			intent.putExtra("contentSize", contentSize);
			context.startActivity(intent);
		}
	}

	private String content;
	private TextView tvBigText;
	private int contetnSize;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.big_text_act);
		initViews();
		initListener();
		initData(savedInstanceState);
	}

	/**
	 * 初始化View
	 */
	@Override
	protected void initViews() {
		tvBigText = (TextView) findViewById(R.id.tv_big_text);
	}

	private void initData(Bundle savedInstanceState) {
		Intent intent = getIntent();
		content = (String) intent.getStringExtra("content");
		contetnSize = (int) intent.getIntExtra("contentSize", 16);
		tvBigText.setTextSize(TypedValue.COMPLEX_UNIT_SP, contetnSize);
		tvBigText.setMinHeight(mScreenHeight - Tools.dip2px(this, 15) - Tools.getStatusBarHeight(this));
		setEmojiTextView(tvBigText, content);
	}

	private void initListener() {
		tvBigText.setOnClickListener(this);
	}

	@Override
	public void onClick(View v) {
		switch (v.getId()) {
		case R.id.tv_big_text:
			finish();
			break;

		default:
			break;
		}
	}

}

/**
	 * 
	 * @description 獲取狀態欄高度
	 * @author zhongwr
	 * @params
	 * @return 返回狀態欄高度
	 * @update 2016年1月25日 下午8:53:31
	 */
	public static int getStatusBarHeight(Context context) {
		if (statusBarHeight <= 0) {
			Rect frame = new Rect();
			((Activity) context).getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
			statusBarHeight = frame.top;
		}
		if (statusBarHeight <= 0) {
			try {
				Class<?> c = Class.forName("com.android.internal.R$dimen");
				Object obj = c.newInstance();
				Field field = c.getField("status_bar_height");
				int x = Integer.parseInt(field.get(obj).toString());
				statusBarHeight = context.getResources().getDimensionPixelSize(x);

			} catch (Exception e1) {
				e1.printStackTrace();
			}
		}
		return statusBarHeight;
	}

public static int dip2px(Context context, float dipValue) {
		return (int) (dipValue * density + 0.5f);
	}

雙擊


import android.content.Context;
import android.view.View;
import android.view.View.OnClickListener;

/**
 * 雙擊放大文本監聽器
 * 
 * @author zhongwr
 * 
 */
public class BigTextDoubleClickListener implements OnClickListener {
	private long lastClickTime;
	private Context mContext;
	/** 雙擊要放大字體的內容 */
	private String content;

	public BigTextDoubleClickListener(Context mContext, String content) {
		this.content = content;
		this.mContext = mContext;
	}

	@Override
	public void onClick(View v) {
		// 雙擊
		if (System.currentTimeMillis() - lastClickTime <= 1000) {// 雙擊“兩次點擊間隔小於一秒
			// 跳轉到放大字體
			BigTextActivity.startBigTextAct(mContext, content, 20);
		}
		lastClickTime = System.currentTimeMillis();
	}
}

放大字體demo:http://download.csdn.net/detail/zhongwn/9418678

發佈了68 篇原創文章 · 獲贊 38 · 訪問量 25萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章