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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章