我在相对布局中有一个图像,在图像下面有一个线性布局。这个图像是透明的,所以看起来没什么。
我的代码为线性布局添加了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;
}
}
我只是使用启动图标作为图像。
任何帮助都会让我的脱发变得容易,多亏了提前。
答案 0 :(得分:1)
您可以设置一个false的布尔值。如果调用ACTION_MOVE,则将其设置为true,并在调用ACTION_UP时再次将其设置为false。
然后使用处理程序
每隔x毫秒调用一次运行实现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);
}