2017-07-27 6 views
0

noman zoomtextviewライブラリを使用して、スクロールでアプリケーションを構築してテキストビューをズームしようとしています。プロジェクトにインポートしたときにうまくいきました。もう1つのアクティビティを追加し、ソースプロジェクトアクティビティからこのアクティビティにまったく同じコードをコピーしました。今、Appがクラッシュします。ソースプロジェクトのJavaファイルをZoomTextView.javaとして命名され、activity_main.xml多くのアクティビティが追加されたときにzoomtextviewライブラリがクラッシュする

ファイルone.java:

package noman.zoomtextview; 
import android.content.Context; 
import android.support.annotation.NonNull; 
import android.util.AttributeSet; 
import android.util.Log; 
import android.util.TypedValue; 
import android.view.MotionEvent; 
import android.view.ScaleGestureDetector; 
import android.widget.TextView; 

public class one extends TextView { 
private static final String TAG = "ZoomTextView"; 
private ScaleGestureDetector mScaleDetector; 

private float mScaleFactor = 1.f; 
private float defaultSize; 

private float zoomLimit = 3.0f; 


public one(Context context) { 
    super(context); 
    initialize(); 
} 

public one(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    initialize(); 
} 

public one(Context context, AttributeSet attrs, int defStyleAttr) { 
    super(context, attrs, defStyleAttr); 
    initialize(); 
} 

private void initialize() { 
    defaultSize = getTextSize(); 
    mScaleDetector = new ScaleGestureDetector(getContext(), new ScaleListener()); 

} 

public void setZoomLimit(float zoomLimit) { 
    this.zoomLimit = zoomLimit; 
} 

@Override 
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
    super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
} 

@Override 
public boolean onTouchEvent(@NonNull MotionEvent ev) { 
    super.onTouchEvent(ev); 
    mScaleDetector.onTouchEvent(ev); 
    return true; 
} 

private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener { 
    @Override 
    public boolean onScale(ScaleGestureDetector detector) { 
     mScaleFactor *= detector.getScaleFactor(); 
     mScaleFactor = Math.max(1.0f, Math.min(mScaleFactor, zoomLimit)); 
     setTextSize(TypedValue.COMPLEX_UNIT_PX, defaultSize * mScaleFactor); 
     Log.e(TAG, String.valueOf(mScaleFactor)); 
     return true; 
    } 
} 
} 

one.xmlファイル:

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin"> 


<noman.zoomtextview.ZoomTextView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center" 
    android:text="@string/twentyfive" /> 
</RelativeLayout> 

マニフェストファイル:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="noman.zoomtextview"> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

</manifest> 

答えて

0

新しいアクティビティをマニフェストに追加する必要があります。

これは、あなたが

<activity android:name=".YourNewActivity"/> 

に持っているかであり、あなたの主な活動は、あなたの新しい活動であるならば、

<activity android:name=".YourNewActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
この

<activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

を置き換えます

関連する問題