導航:首頁 > 操作系統 > upxandroid

upxandroid

發布時間:2023-05-08 07:06:58

1. android中我在一個RelativeLayout中放入了一個ImageView,我的Imageview自定義之可以拖動,也就是可以在這

這個問題是給imageView設置了background後會調用它的onLayout函數使得imageView在relativeLayout裡面重新布局引起的。沒什麼特別的辦法,在設置背景之前保存layout的四個參數,設置背景之後再調用一次layout吧~

2. 誰知怎麼自定義StackView控制項

這就是你遇到的問題的,呵呵

3. android listView 中添加了一個滑動按鈕 slipButton報錯

我自己一個人弄的公司的產品客戶端,所以還是想記錄下來以免忘記或者丟失...
在我的上一篇博文(點擊打開鏈接)是一個文件管理的東西,基礎組件也是ListView所以在此只是改動一下而已。
單擊:
點擊出現按鈕比較簡單只需要替換上文中file_row.xml的checkbox為button就可以,然後自己實現onclicklistener就行了,唯一要注意的就是要在xml文件中的button的android:clickable屬性設置為true就可以了。
滑動:
滑動來說也相對比較簡單需要在上文種FileAdapter.java類中getView方法里的convertView參數對象設置ontouchlistener就可以了,具體看代碼:

[java] view plain
@Override
public View getView(int position,View convertView,ViewGroup parent){
ViewHolder holder;

if(convertView == null){
convertView = mInflater.inflate(R.layout.filemanage, null);
convertView.setOnTouchListener(new OnTouchListener(){

@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction())//根據動作來執行代碼
{
case MotionEvent.ACTION_MOVE://滑動
Toast.makeText(context, "move...", Toast.LENGTH_SHORT).show();
break;
case MotionEvent.ACTION_DOWN://按下
Toast.makeText(context, "down...", Toast.LENGTH_SHORT).show();
DownX = event.getX();
break;
case MotionEvent.ACTION_UP://松開
UpX = event.getX();
Toast.makeText(context, "up..." + Math.abs(UpX-DownX), Toast.LENGTH_SHORT).show();
if(Math.abs(UpX-DownX) > 20){
ViewHolder holder = (ViewHolder) v.getTag();
holder.cBox.setVisibility(View.VISIBLE);
}
break;
default:
}
return true;
}
});
holder = new ViewHolder();
VHs.add(holder);
holder.text = (TextView) convertView.findViewById(R.id.filetext);
holder.text.setTextColor(context.getResources().getColor(R.color.text_color));
holder.icon = (ImageView) convertView.findViewById(R.id.fileicon);
holder.cBox = (Button) convertView.findViewById(R.id.delete_btn);
holder.cBox.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
Toast.makeText(context, "btn click...", Toast.LENGTH_SHORT).show();
}
});
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
File f=new File(paths.get(position).toString());
if(items.get(position).toString().equals("goroot")){
holder.text.setText("返回根目錄");
holder.icon.setImageBitmap(mIcon1);
holder.cBox.setVisibility(isVisibility.get(position));
}else if(items.get(position).toString().equals("goparent")){
holder.text.setText("返回上一級");
holder.icon.setImageBitmap(mIcon2);
holder.cBox.setVisibility(isVisibility.get(position));
}else{
holder.text.setText(f.getName());
if(f.isDirectory()){
holder.icon.setImageBitmap(mIcon3);
holder.cBox.setVisibility(isVisibility.get(position));
}else{
holder.icon.setImageBitmap(mIcon4);
holder.cBox.setVisibility(isVisibility.get(position));
}
}
return convertView;
}

4. 誰知怎麼自定義StackView控制項

1,配置文件.xml文件中的屬性,目前只知道兩個

<com.youku.widget.YoukuHomePageStackView
android:id="@+id/homepage_stackview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:loopViews="true"
android:layerType="hardware"
/>
android:loopViews:控制是否是輪播效果,能被翻動的,設置為true,就可以被翻動;設置為false,就不能被翻動。。

android:layerType:是設置是否是硬體加速的問題,是為解決布局StackView是在ActionBar下面,自動輪播時候,每一個StackView的Item會翻上來遮擋ActionBar。

還有none,這個是默認屬性,這個屬性就是不進行硬體加速;還有software,這是硬體加速中的軟體加速屬性,據說如果手機不支持hardware,那麼這個

屬性自動會變成software屬性。。。。

2,重寫StackView控制項

package com.youku.widget;

import java.util.Timer;

import java.util.TimerTask;

import com.youku.util.Logger;

import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.widget.StackView;
import android.support.v4.view.ViewPager;
@SuppressLint("NewApi")
public class YoukuHomePageStackView extends StackView {
public static final String TAG = "LXF";

float dispatchDownXDistance = 0;
float dispatchUpXDistance = 0;
float dispatchDownYDistance = 0;
float dispatchUpYDistance = 0;
private boolean isAutoSlideMode;
private Timer timer;
private TimerTask task;
private static final int MSG_SLIDE = 10000110;
private static final int PERIOD = 5000;

private ViewPager viewPagerFragment;

private Handler handler = new Handler(){

@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case MSG_SLIDE:
showNext();
sendEmptyMessageDelayed(MSG_SLIDE, PERIOD);
break;

default:
break;
}
}

};

public YoukuHomePageStackView(Context context, AttributeSet attrs) {
super(context, attrs);

}

@Override
protected void onWindowVisibilityChanged(int visibility) {
super.onWindowVisibilityChanged(visibility);
Logger.lxf("====onWindowVisibility===visibility===="+visibility);
if(visibility == View.VISIBLE) {
startAutoSlide();
} else {
cancleTask();
}
}
//自動輪播方法,使用handler來實現自動輪播
public void startAutoSlide() {
cancleTask();
handler.sendEmptyMessageDelayed(MSG_SLIDE, PERIOD);
// isAutoSlideMode = true;
// if (timer == null) {
// timer = new Timer();
// task = null;
// task = new TimerTask() {
//
// @Override
// public void run() {
// // F.ot("prove i'm live");
// Message m = Message.obtain();
// m.what = MSG_SLIDE;
// handler.sendMessage(m);
// }
// };
// }
// timer.schele(task, PERIOD, PERIOD);
}

public void cancleTask(){
handler.removeMessages(MSG_SLIDE);
// if(null!=timer){
// timer.cancel();
// timer.purge();
// timer = null;
// }
//
// if(null!=task){
// task.cancel();
// task = null;
// }
}

public void removeAllView(){
removeAllViews();
}

//監聽這個方法主要是為了在ViewPager和StackView之間的事件點擊之間沖突問題。。。

//當StackView被點擊的時候,會觸發dispatchTouchEvent()中的Action_DOWN動作,此時()設置為true,則此時ViewPager不會被觸發,只有StackView才能被觸發。。。
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
int action = ev.getAction();

switch(action){

case MotionEvent.ACTION_DOWN:
viewPagerFragment = (ViewPager)getParent().getParent().getParent().getParent().getParent().getParent().getParent();
dispatchDownXDistance = ev.getX();
dispatchDownYDistance = ev.getY();
cancleTask();
getParent().(true);
// return true;
break;
case MotionEvent.ACTION_MOVE:
break;
case MotionEvent.ACTION_UP:
dispatchUpXDistance = ev.getX();
dispatchUpYDistance = ev.getY();
float distanceMoveOne = dispatchUpXDistance-dispatchDownXDistance;
float distanceMoveTwo = dispatchDownXDistance-dispatchUpXDistance;
float distanceMoveY = dispatchUpYDistance-dispatchDownYDistance;
// Logger.lxf("distanceMoveY=="+distanceMoveY);
// Logger.lxf("Math distanceMoveY=="+Math.abs(distanceMoveY));
// Logger.lxf("Math distanceMoveOne=="+Math.abs(distanceMoveOne));
getParent().(false);
startAutoSlide();
if(distanceMoveOne>100&&Math.abs(distanceMoveY)<30){
//向左滑動
viewPagerFragment.setCurrentItem(1);

return false;
}else if(distanceMoveTwo>100&&Math.abs(distanceMoveY)<30){
//向右滑動
viewPagerFragment.setCurrentItem(3);
return false;
}
break;
case MotionEvent.ACTION_CANCEL:
startAutoSlide();
break;
}
return super.dispatchTouchEvent(ev);
}

}

閱讀全文

與upxandroid相關的資料

熱點內容
exe打開指定文件夾 瀏覽:264
pdf裡面怎麼去水印 瀏覽:845
appleid賬號加密碼 瀏覽:220
蘋果如何下載微倉app 瀏覽:916
迅雷解壓進度為0 瀏覽:859
解壓解惑近義詞 瀏覽:316
壓縮比不一樣燃燒室不一樣 瀏覽:101
androidbutton左對齊 瀏覽:172
怎麼找到學校的伺服器 瀏覽:368
android狀態欄高度是多少 瀏覽:987
linuxcliphp 瀏覽:515
蘿卜源碼如何關閉用戶注冊驗證 瀏覽:756
蘋果手機頭條app怎麼沒有tv 瀏覽:563
電腦qq文件夾怎麼發不出去 瀏覽:614
解壓小游戲測試鑽石劍的硬度 瀏覽:962
java結束函數 瀏覽:622
打開遠程桌面的命令 瀏覽:836
樹莓派如何搭建mqtt伺服器 瀏覽:588
怎麼加密w8文件 瀏覽:609
linuxprogram 瀏覽:708