Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 触摸屏幕时使图像高度不断增加_Android_Timer_Touch Event - Fatal编程技术网

Android 触摸屏幕时使图像高度不断增加

Android 触摸屏幕时使图像高度不断增加,android,timer,touch-event,Android,Timer,Touch Event,我有一个相对布局内的图像和图像下方的线性布局。这个图像是透明的,所以看起来什么都没有 我的代码向线性布局添加了3个文本视图 当我在屏幕上移动手指时,它会放大图像的高度,从而给人一种线性布局在屏幕上向下移动的印象 我想得到它,这样当触摸屏幕时,即使取景器静止,图像也会变大,看起来像是图像在屏幕上向下移动。当手指被移除时,图像停止放大 我已经尝试创建一个线程来运行onTouchEvent大约两周了,但是我的代码似乎使应用程序崩溃了 是否有人可以修改我的代码/添加此功能,以便我可以看到哪里出了问题。我

我有一个相对布局内的图像和图像下方的线性布局。这个图像是透明的,所以看起来什么都没有

我的代码向线性布局添加了3个文本视图

当我在屏幕上移动手指时,它会放大图像的高度,从而给人一种线性布局在屏幕上向下移动的印象

我想得到它,这样当触摸屏幕时,即使取景器静止,图像也会变大,看起来像是图像在屏幕上向下移动。当手指被移除时,图像停止放大

我已经尝试创建一个线程来运行onTouchEvent大约两周了,但是我的代码似乎使应用程序崩溃了

是否有人可以修改我的代码/添加此功能,以便我可以看到哪里出了问题。我希望我只是没有把线程放在正确的位置,或者我没有正确停止线程,这导致它崩溃

我的布局

<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"
    android:orientation="vertical"
    android:id="@+id/LinearLayout"
    tools:context=".MainActivity" >

    <ImageView
        android:id="@+id/Spacer"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:contentDescription="Spacer"
        android:src="@drawable/ic_launcher" />

    <LinearLayout 
        android:id="@+id/Letters"
        android:orientation="horizontal"
        android:layout_below="@id/Spacer"
        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" >

    </LinearLayout>

</RelativeLayout>

我的活动

package com.example.zz;

import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.RelativeLayout;
import android.widget.TextView;

public class MainActivity extends Activity {

    protected int splashTime = 3000;

    TextView tv1;
    ImageView spacer;
    String[] name = {"Hello","Rich","You","Hero"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        String[] letters = {"A","B","C"};
        String letter = "";
        String nextLetters = "";

        for( int i = 0; i < letters.length; i++)
        {
            letter = letters[i];
            nextLetters = nextLetters + letter;

            // Create a textView in code
            LayoutParams paramsExample = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT,1);
            View linearLayout =  findViewById(R.id.Letters);
            TextView tv1 = new TextView(this); 
            tv1.setText(letter); 
            tv1.setLayoutParams(paramsExample);
            tv1.setGravity(Gravity.CENTER);
            ((LinearLayout) linearLayout).addView(tv1);
        } 
    }


    @Override
    public boolean onTouchEvent(MotionEvent e) {

        switch (e.getAction()) {
            case MotionEvent.ACTION_MOVE:
                spacer = (ImageView) findViewById(R.id.Spacer);

                RelativeLayout.LayoutParams head_params = (RelativeLayout.LayoutParams)spacer.getLayoutParams();
                head_params.height = 400;
                spacer.setLayoutParams(head_params);

        }
        return true;
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}
package com.example.zz;
导入android.app.Activity;
导入android.os.Bundle;
导入android.view.Gravity;
导入android.view.Menu;
导入android.view.MotionEvent;
导入android.view.view;
导入android.widget.ImageView;
导入android.widget.LinearLayout;
导入android.widget.LinearLayout.LayoutParams;
导入android.widget.RelativeLayout;
导入android.widget.TextView;
公共类MainActivity扩展了活动{
保护时间=3000;
文本视图tv1;
影像间隔;
String[]name={“你好”、“有钱”、“你”、“英雄”};
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
字符串[]字母={A”,“B”,“C”};
字符串字母=”;
字符串nextLetters=“”;
for(int i=0;i
我只是使用启动图标作为图像


任何帮助都会使我的脱发变得容易,提前谢谢。

您可以设置一个布尔值,该值为false。如果调用ACTION\u MOVE,则将其设置为true;如果调用ACTION\u UP,则再次将其设置为false

然后,使用处理程序每隔x毫秒调用run

    private Handler handler = new Handler();
实现runnable并分配处理程序

    private Handler handler = new Handler();
在“创建时”中:

    handler.postDelayed(this,TIME);
然后调用run:

    @Override
    public void run(){
         if (yourboolean == true){
              spacer = (ImageView) findViewById(R.id.Spacer);

              RelativeLayout.LayoutParams head_params = (RelativeLayout.LayoutParams)spacer.getLayoutParams();
              head_params.height += 100;
              spacer.setLayoutParams(head_params);   

         }

         handler.postDelayed(this,TIME);
    }

哦,那我想看看你秃顶哈哈:)